Apache で mod_proxy を使用する
アトラシアンのアプリケーションはリバースプロキシの使用を許可します。しかし、アトラシアンのサポートはその設定に対してサポートの提供は行いません。つまり、アトラシアン はリバースプロキシに対するあらゆるサポートの提供を保証できません。
設定に関してサポートが必要であれば、Atlassian Answers に質問をあげてください。
次のような場合、この構成を使用できます。
- 既存の Apache ベースの web サイトがあり、Confluence を追加する場合 ( http://www.example.com/confluence など)。
- 2 つ以上の Java アプリケーションがあり、それぞれが異なるポート上の独自のアプリケーション サーバーで実行し (例: http://example:8090/confluence および http://example:8080/Jira)、通常の HTTP ポート (80) (例: http://www.example.com/confluence および http://www.example.com/jira) で両方使用できます。これによって、各アプリケーションを個別に、再起動、管理、およびデバックすることができます。
注意:このページでは Confluence 自体ではなく、Apache の設定について説明しています。アトラシアンはこの設定による Confluence をサポートしますが、Apache に関する問題のデバッグを支援することについては保証できません。この資料は情報提供のみを目的としているため、自己責任で使用されるようご注意ください。
On this page:
基本設定
これらの例では、以下を使用します。
http://www.example.com/confluence - 希望の URL
http://example:8090 - 現在 Confluence がインストールされているホスト名とポート
http://example:8091 - ホスト名とポート Synchrony (共同編集を駆動するサービス)。既定値の設定:
/confluence - Confluence の希望のコンテキスト パス(ホスト名とポートの後の部分)
/synchrony - Synchrony のコンテキスト パス、共同編集を可能にするプロセス。
これらの URL を独自の URL に置き換える必要があります。
1 コンテキストパスを設定する
コンテキスト パスを使用せずに Confluence にアクセスしたい場合 ( www.example.com, など)このステップをスキップします。
Tomcat で Confluence のアプリケーション パス (ホスト名とポートに続く部分) を設定します。この例では、コンテキスト パスは /confluence
になります。
<installation-directory>conf/server.xml
を編集し、"Context" 定義を見つけます。
<Context path="" docBase="../confluence" debug="0" reloadable="true">
次のように変更します。
<Context path="/confluence" docBase="../confluence" debug="0" reloadable="true">
この例では、コンテキスト パスとして /confluence
を使用しています。/resources
は Confluence によって使用されています。問題を防ぐため、コンテキスト パスとして使用することはできません。
Confluence を再起動し、http://example:8090/confluenceにアクセス可能か確認してください。
2 リダイレクションのURLの設定
次に、リダイレクション用の URL を設定します。同じ <installation-directory>conf/server.xml
ファイルで、開始点としてサンプル コネクタを使用します。
既定のコネクタをコメント アウトします (プロキシされないアクセス用)。
"HTTP - Proxying Confluence via Apache or Nginx over HTTP" ヘッダーの下に記載されているコネクタのコメントを解除します。
次の最後の行のように、ご利用の proxyName と proxyPort を挿入します。
<Connector port="8090" connectionTimeout="20000" redirectPort="8443"
maxThreads="48" minSpareThreads="10"
enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="http" proxyName="www.example.com" proxyPort="80"/>
HTTPS を有効化する予定の場合、"HTTP - Proxying Confluence via Apache or Nginx over HTTP" 配下のコネクタを使用します。
3 mod_proxy の設定
以下のいずれかの例を使用して、Apache http.conf
ファイルを編集し、アプリケーション サーバーへのリクエストをプロキシするようにします。
まだ有効化していない場合は、次の必要な Apache モジュールを有効化する必要があります。
- mod_proxy
- mod_proxy_http
- proxy_wstunnel
- mod_rewrite
(proxy_wstunnel と mod_rewrite は Confluence 6.0 の新しい要件です)
http.conf
ファイルの形式やモジュールの場所はオペレーティング システムによって異なる場合があります。Windows ユーザーの場合、モジュール ファイルへの絶対パスを指定することを推奨します。
例 1: コンテキストパスを使用した設定
ステップ 1 でコンテキストパスを設定し、この http://www.example.com/confluence などのコンテキスト パスを使用して Confluence にアクセスする場合はこの例を使用します。
この例では、ユーザーは WebSockets 経由で直接、共同編集に必要な Synchrony に接続します。
構成での指令の順序は重要です。
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
# Put this in the main section of your configuration (or virtual host, if using Apache virtual hosts)
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass /synchrony http://<domain>:8091/synchrony
<Location /synchrony>
Require all granted
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://<domain>:8091%{REQUEST_URI} [P]
</Location>
ProxyPass /confluence http://<domain>:8090/confluence
ProxyPassReverse /confluence http://<domain>:8090/confluence
<Location /confluence>
Require all granted
</Location>
注:: Apache HTTP Server 2.2 と Confluence 6.0 以降を併用することはできません。SSL の使用を予定している場合は、バージョン 2.4.10 以降が必要となります。
例 2: コンテキスト パスなしの構成
ステップ 1 をスキップし、この http://www.example.com などのコンテキストパスを使用せず Confluence にアクセスする場合はこの例を使用します。
以前の例のように、ユーザーは WebSockets 経由で直接、共同編集に必要な Synchrony に接続します。
構成での指令の順序は重要です。
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
# Put this in the main section of your configuration (or virtual host, if using Apache virtual hosts)
ProxyRequests Off
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/synchrony
RewriteRule ^/(.*) http://<domain>:8090/$1 [P]
<Proxy *>
Require all granted
</Proxy>
ProxyPass /synchrony http://<domain>:8091/synchrony
<Location /synchrony>
Require all granted
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://<domain>:8091%{REQUEST_URI} [P]
</Location>
ProxyPass / http://<domain>:8090
ProxyPassReverse / http://<domain>:8090
<Location />
Require all granted
</Location>
注:: Apache HTTP Server 2.2 と Confluence 6.0 以降を併用することはできません。SSL の使用を予定している場合は、バージョン 2.4.10 以降が必要です。
4 Apache の再起動
これは新しい設定を有効するのに必要です。 Apache を再起動するには、次のコマンドを実行します。
sudo apachectl graceful
5HTTP 圧縮を無効にする
プロキシと Tomcat の両方で圧縮を実行すると、Jira などのアトラシアンの他のアプリケーションをと統合する際に問題が発生することがあります。「Confluence 内で HTTPレスポンスを圧縮する」を参照して、HTTP 圧縮を無効にしてください。
6Confluence の Base URL の変更
最後の段階では、Base URL に、プロキシ内で使用するアドレスを設定します。この例では、http://www.example.com/confluence です。
SSL の追加
HTTPS を有効化する予定がある場合、「SSL と Apache を使用してアトラシアン アプリケーションを保護する」を参照して、HTTPS サンプル コネクタを選択していることを確認します。
詳細情報
- mod_proxy_html サイトに複雑な設定でのこのモジュールの使用に関するドキュメントと例があります。
- Apache Week のチュートリアルでは2つのアプリケーションと ProxyHTMLURLMap に関連する複雑な状況を扱っています。