Apache HTTP Server (mod_proxy_http) でアトラシアンのサーバー アプリケーションをプロキシする

この記事はアトラシアンのサーバー製品にのみ適用されます。クラウドとサーバー製品の違いについてはこちらをご確認ください。

アトラシアン アプリケーションの製品内でリバース プロキシを使用できますが、アトラシアン サポートはその設定についての支援は行いません。つまり、アトラシアンではリバース プロキシに関するあらゆるサポートの提供が保証されません

設定について支援が必要な場合、Atlassian Answers に質問をご登録ください。

このページでは、Apache HTTP Server がアトラシアンのサーバー アプリケーションのリバース プロキシとして動作するネットワーク トポロジを確立する方法を説明します。  このページの手順に厳密に従って設定を行うことをおすすめします。  

 アトラシアン アプリケーションでのリバース プロキシの使用は、ユーザーに次のようなアクセス方法を提供したいときに検討します。 

より複雑なシナリオについては、Apache HTTP Server のドキュメント を参照したり、ご自身の組織内の Apache 担当者に相談したり、Attlasian Answers で質問したり、アトラシアン エキスパートを利用したりしていただくことをおすすめします。

このページの手順は、アトラシアンの次のサーバー アプリケーションに適用されます。

  • Jira Server アプリケーション (Jira Software Server、Jira Core、Jira Service Desk)
  • Confluence Server (このガイドでは Confluence 6.0 以降向けの追加手順も案内しています)
  • Bamboo Server
  • Bitbucket Server
  • Fisheye
  • Crucible
  • Crowd

このページの以降の例の <atlassianapp> は、アトラシアンの上記のサーバー アプリケーションのいずれかの名前を表します。


アトラシアンのサーバー アプリケーションには web サーバーが同梱されるため、製品をプロキシ サーバーなしで実行できます。web サーバーとして、ほとんどのアトラシアン アプリケーションに Apache Tomcat が同梱されます (Fisheye と Crucible は Jetty を使用します)。このため、アトラシアン アプリケーションをプロキシする再は、Tomcat (Fisheye または Crucible を使用している場合は Jetty) と Apache HTTP Server の両方を設定する必要があります。

このページの内容:

要件

次の条件を満たしている必要があります。

Apache バージョン 2.2 または 2.4 がインストール済み

httpd.conf ファイルを編集して Apache HTTP Server を設定する方法については、Apache HTTP Server のドキュメントをご参照ください。特に「Apache Module mod_proxy」セクションが有用です。httpd.conf ファイルへの変更は、Apache HTTP Server の再起動後にのみ有効になることにご注意ください (Confluence 6.0 などの、Synchrony を使用するアプリケーションは Apache 2.4.10 以降を使用する必要があります)。

ドメインの DNS エントリが配置および設定済み

セットアップするプロキシ トポロジに応じた変更が組織の現在の DNS 設定に必要かどうかを、必要に応じてシステムまたはネットワーク管理者とともに確認します。

アトラシアン アプリケーションがインストール済みで、Web ブラウザからアクセス可能

アトラシアン アプリケーションを通常の手順でインストールします。

パート A. アトラシアン アプリケーションを設定する

このセクションでは、各アトラシアン アプリケーションに同梱の Tomcat (または Jetty) Web サーバーをリバース プロキシの背後で実行するように設定する方法について説明します。

1. アトラシアン アプリケーションを停止する

アプリケーションを停止すると、Tomcat も停止します。

 

クリックして停止方法についての情報を表示...
Jira アプリケーション

次のコマンドを Jira のインストール ディレクトリで実行します。

  • bin/start-jira.sh
  • bin/stop-jira.sh

Windows の場合、次のコマンドを実行します。

  • bin\start-jira.bat
  • bin\stop-jira.bat

Jira アプリケーションの起動および終了スクリプト」もご参照ください。

Confluence

次のコマンドを Confluence のインストール ディレクトリで実行します。

  • bin/start-confluence.sh
  • bin/stop-confluence.sh

Windows の場合、次のコマンドを実行します。

  • bin\start-confluence.bat
  • bin\stop-confluence.bat

システム起動時に Confluence を自動的に開始する 」もご参照ください。

Bamboo Server

次のコマンドを Bamboo のインストール ディレクトリで実行します。

  • bin/start-bamboo.sh
  • bin/stop-bamboo.sh

Windows の場合、次のコマンドを実行します。

  • bin\start-bamboo.bat
  • bin\stop-bamboo.bat

Bamboo をサービスとして実行する」もご参照ください。

Bitbucket Server

Bitbucket Server の開始および終了」をご参照ください。

Fisheye

次のコマンドを Fisheye のインストール ディレクトリで実行します。

  • bin/start.sh
  • bin/stop.sh

Windows の場合、次のコマンドを実行します。

  • bin\start.bat
  • bin\stop.bat

Fisheye を Windows サービスとして実行する」もご参照ください。

Crucible

次のコマンドを Crucible のインストール ディレクトリで実行します。

  • bin/start.sh
  • bin/stop.sh

Windows の場合、次のコマンドを実行します。

  • bin\start.bat
  • bin\stop.bat

Crucible を Windows サービスとして実行する」もご参照ください。

Crowd

次のコマンドを Crowd のインストール ディレクトリで実行します。

  • /start_crowd.sh
  • /stop_crowd.sh

Windows の場合、次のコマンドを実行します。

  • \start-crowd.bat
  • \stop-crowd.bat

Crowd を Windows サービスとしてインストールする」もご参照ください。

2. コンテキスト パスを設定する

このステップは、アプリケーションへのアクセスを http://ourcompany.com/<contextpath> などのコンテキスト パス上で行いたい場合にのみ必要です。不要な場合は、このステップをスキップできます。

Fisheye および Crucible

FishEye または Crucible をプロキシする場合、管理領域から Jetty の Web コンテキスト パスを設定します。「Fisheye の web サーバーを設定する」を参照してください。

Jira アプリケーション、Confluence、Bitbucket Server、Bamboo

これらのアトラシアンのサーバー アプリケーションのいずれかをプロキシする場合、Tomcat の server.xml ファイルでコンテキスト パスを次のように設定します。

 

クリックして server.xml の場所を確認する...

server.xml ファイルの場所は、ご利用のアプリケーション、オペレーティング システム、およびインストール先に応じて異なります。 

アトラシアン アプリケーションで共通の既定のインストール先は、次のとおりです。

  • Linux: /opt/atlassian/<application-name>
  • Windows: C:\Program Files\Atlassian\<application-name>
  • Windows: C:\Atlassian\<application-name>

アトラシアン アプリケーションのフォルダ構造内の場所:

アプリケーション server.xml の場所
Bamboo <install-path>/conf/
Confluence <install-path>/conf/
Crowd <install-path>/apache-tomcat/conf/
Crucible Fisheye と同様
Fisheye Fisheye の設定ファイルは config.xml です。「Fisheye の web サーバーを設定する」および「Fisheye / Crucible で追加ポートでの web リクエストのリッスンを有効化する方法」をご参照ください。
Jira アプリケーション <install-path>/conf/
Bitbucket Server 5.0

なし。<Bitbucket home directory>/shared/bitbucket.properties に置き換えられています。

server.xml のカスタマイズを bitbucket.properties に移行する方法」をご参照ください。

Bitbucket Server 4.0 〜 4.14 <Bitbucket home directory> /shared/server.xml
Stash 3.8 〜 3.11

<Stash home directory>/shared/

このリリースを利用しているが、上述のディレクトリに server.xml が存在しない場合、<install-path>/conf/server.xml から実行しています。

インスタンスのアップグレード時の考慮事項をへらすため、<install-path>/conf/server.xml<Stash home directory>/shared/ にコピーすることをおすすめします。


Stash 3.7 以前 <install-path>/conf/

<install-path> は、システムでのアプリケーションのインストール先です。

 

Bitbucket Server 5.0 を設定している場合

Bitbucket Server 5.0 以降では Tomcat のコネクタを直接設定することができません。このため、このセクションの設定は、Bitbucket Server 4.14 以前でのみ利用できます。

server.xml の設定は、<Bitbucket home directory>/shared/bitbucket.properties で置き換えられています。

Bitbucket Server 5.0 以降に固有の手順については、「Bitbucket Server を異なるコンテキスト パスに移動する」をご参照ください。

 

 

Tomcat の server.xml 設定ファイルには、次のような Context ディレクティブがあります (Crowd を除く)。

<Context path="" docBase="${catalina.home}/atlassian-<atlassianapp>" reloadable="false" useHttpOnly="true">

ディレクティブを変更して、新しいコンテキスト パスを追加します。

<Context path="/<contextpath>" docBase="${catalina.home}/atlassian-<atlassianapp>" reloadable="false" useHttpOnly="true">

<contextpath> には独自の値を使用します。一般に、各アプリケーションで異なるコンテキスト パスを使用します。

path の値の先頭では path="<contextpath>" ではなく path="/<contextpath>" のように、スラッシュ (/) が必要です。

アプリケーション URL から 'crowd' コンテキストを削除する」の手順を使用します。

3. Connector ディレクティブを設定する

FishEye または Crucible を使用している場合、管理領域からプロキシ ホスト、プロキシ スキーム、およびプロキシ ポートを設定します。詳細については、「Fisheye web サーバーを設定する」を参照してください。

Bitbucket Server 5.0 を設定している場合

Bitbucket Server 5.0 以降では Tomcat のコネクタを直接設定することができません。このため、このセクションの設定は、Bitbucket Server 4.14 以前でのみ利用できます。

server.xml の設定は、<Bitbucket home directory>/shared/bitbucket.properties で置き換えられています。

対応するプロパティと、以降の設定に対応する手順については、「server.xml のカスタマイズを bitbucket.properties に移行する」をご参照ください。bitbucket.properties へのマッピングが完了したら、「パート B: Apache HTTP Server を設定する」に進んでください。

その他のアトラシアン サーバー アプリケーションのいずれかを使用している場合、Connector ディレクティブを次のように設定します。

各アプリケーションにおいて、Tomcat の server.xml  ファイルで通常の (非 SSL) Connector ディレクティブを見つけ、次のように Connector ディレクティブに schemeproxyName、および proxyPort 属性を追加します。その他の属性には既定値を設定します。これには port も含まれ、変更する特別な理由がない場合はそのままにします。proxyName の値には独自のドメイン名を使用します。

<Connector port=<default>
	maxThreads=<default>
    minSpareThreads=<default>
    connectionTimeout=<default>
    enableLookups=<default>
    maxHttpHeaderSize=<default>
    protocol=<default>
    useBodyEncodingForURI=<default>
    redirectPort=<default>
    acceptCount=<default>
    disableUploadTimeout=<default>
	proxyName="<subdomain>.<domain>.com"
	proxyPort="80"
	scheme="http"/>

proxyName パラメータは、Apache HTTP Server のサービス提供元として設定する FQDN に設定する必要があることにご注意してください。これは、ユーザーがアプリケーションにアクセスするためにブラウザに入力するアドレスです。 例:

  • http://<atlassianapp>.ourcompany.com などのサブドメインでアプリケーションにアクセスする場合: <atlassianapp>.ourcompany.com 
  •  http://ourcompany.com/<atlassianapp> などのコンテキスト パスでアプリケーションにアクセスする場合: ourcompany.com。この場合、コンテキスト パスを proxyName パラメータに含めず、上述のステップ 2Context ディレクティブを設定済みである必要があります。

Tomcat Connector の設定の詳細については、「Apache Tomcat 7.0 HTTP Connector リファレンス」を参照してください。

パート B. Apache HTTP Server を設定する

アトラシアンでは、mod_proxy モジュールを使用することを推奨しています。このモジュールは、 Apache のプロキシ、ゲートウェイ、またはキャッシュを実装し、さらに、単一のクライアントで複数の仮想ホストを有効化します。

mod_proxy  プロキシの詳細については、次のページをご参照ください。

1. Apache で  mod_proxy  モジュールを有効化する

必要に応じて、必要なモジュールを Apache で次のように有効化します。

Debian / Ubuntu での手順を展開して確認

Debian および Ubuntu のディストリビューションは Apache を "Apache2" として参照し、apache2.conf 設定ファイルを /etc/apache2/ ディレクトリに保存します。

コマンド ラインから次のように、mod_proxy およびそれをサポートするモジュールを有効化できます。

$ sudo a2enmod proxy_http
Considering dependency proxy for proxy_http:
Enabling module proxy.
Enabling module proxy_http.
To activate the new configuration, you need to run:
  service apache2 restart

Confluence 6.0 以降を Synchrony (共同編集に必要) と実行している場合、Apache 2.4 を使用し、mod_proxy_wstunnel および mod_rewrite モジュールを有効化する必要があります。

$ sudo a2enmod proxy_wstunnel
$ sudo a2enmod rewrite
Fedora / CentOS での手順を展開して確認

Fedora および CentOS 7 は Apache を "httpd" として参照し、mod_proxy モジュールを既定で有効化します。必要に応じ、設定ファイルを /etc/httpd/conf//etc/httpd/conf.d/、および /etc/httpd/conf.modules.d/ ディレクトリで参照できます。

設定ファイルが処理される方法の詳細については、次のページを参照してください。

Confluence 6.0 以降を Synchrony (共同編集に必要) と実行している場合、Apache 2.4.10 以降を使用し、mod_proxy_wstunnel および mod_rewrite モジュールが有効化されているかどうかを確認する必要があります。

Windows での手順を展開して確認

Windows は Apache を "httpd" として参照し、設定ファイルを \conf\httpd.conf に格納します。

Apache httpd.conf 設定ファイルで必要に応じて次の行のコメントを解除 (先頭の "#" を削除) することで、mod_proxy およびそれをサポートするモジュールを有効化できます。

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_connect_module modules/mod_proxy_connect.so 
LoadModule proxy_http_module modules/mod_proxy_http.so

これらの行が設定ファイルにない場合は、追加してください。

Confluence 6.0 以降を Synchrony (共同編集に必要) と実行している場合、Apache 2.4.10 以降を使用し、mod_proxy_wstunnel および mod_rewrite モジュールを有効化する必要があります。

2. mod_proxy を使用して仮想ホストを設定する

Apache のリバース プロキシの背後で 1 つのアトラシアン アプリケーションを実行している場合、次のディレクティブで仮想ホスト ブロックを使用します。

<VirtualHost *:80>
    ServerName <subdomain>.<domain>.com
     
    ProxyRequests Off
    ProxyVia Off
     
    <Proxy *>
         Require all granted
    </Proxy>
 
    ProxyPass /<contextpath> http://<internal_domain>:<port>/<contextpath>
    ProxyPassReverse /<contextpath> http://<internal_domain>:<port>/<contextpath>
</VirtualHost>
  • CentOS の場合、/etc/httpd/conf.d/ で各アプリケーションに対応する個別の設定ファイルに仮想ホスト ブロックを追加する (例: confluence-vhost.confjira-vhost.conf) 手法が推奨されていることにご注意ください。
  • Debian の場合、 /etc/apache2/sites-available/<site> で各アプリケーションに対応する個別の設定ファイルに仮想ホスト ブロックを追加する (例: confluence.confjira.conf) 手法が推奨されていることにご注意ください。これらは既定テンプレートである 000-default.conf に基づいている必要があります。

ProxyPass および ProxyPassReverse ディレクティブでは、末尾にスラッシュを追加する必要がある場合があります。例:

ProxyPass /<contextpath> http://<internal_domain>:<port>/<contextpath>/
ProxyPassReverse /<contextpath> http://<internal_domain>:<port>/<contextpath>/

末尾のスラッシュは、スラッシュが不足していることによる DNS エラーが Apache のログ ファイルで確認されている場合にのみ使用します。この問題の詳細や、解決方法についての追加情報について、こちらのサードパーティ ブログで説明されています。ほとんどの場合、この操作は不要です。

1 つのプロキシの背後で複数のアプリケーションを実行している場合、名前ベースの仮想ホストを使用できます。

  • アトラシアン アプリケーションが同じドメインで異なるコンテキスト パスで実行されている場合は、名前ベースの仮想ホストを 1 つ使用します。例:

    <VirtualHost *:80>
        ServerName mycompany.com
         
        ProxyRequests Off
        ProxyVia Off
         
        <Proxy *>
             Require all granted
        </Proxy>
     
        ProxyPass /jira http://<internal_domain>:8080/jira
        ProxyPassReverse /jira http://<internal_domain>:8080/jira
     
        ProxyPass /bitbucket http://<internal_domain>:7990/bitbucket
        ProxyPassReverse /bitbucket http://<internal_domain>:7990/bitbucket
    </VirtualHost>
  • 各アプリケーションが異なるドメインにある場合は、名前ベースの仮想ホストを複数使用します。例:

    <VirtualHost *:80>
        ServerName myjira.com
         
        ProxyRequests Off
        ProxyVia Off
         
        <Proxy *>
             Require all granted
        </Proxy>
     
        ProxyPass /jira http://<internal_domain>:8080/jira
        ProxyPassReverse /jira http://<internal_domain>:8080/jira
    </VirtualHost>
     
    <VirtualHost *:80>
        ServerName mybitbucket.com
         
        ProxyRequests Off
        ProxyVia Off
         
        <Proxy *>
             Require all granted
        </Proxy>
     
        ProxyPass /bitbucket http://<internal_domain>:7990/bitbucket
        ProxyPassReverse /bitbucket http://<internal_domain>:7990/bitbucket
    </VirtualHost>

Confluence 6.0 以降を Synchrony (共同編集に必要) と使用している場合、Apache 2.4.10 以降を使用する必要があります。

上記に加えてこれらのディレクトリおよび Location ブロックを使用 (クリックして展開)

仮想ホスト ブロックで次のディレクティブと Location ブロックを使用します。

(warning) ディレクティブ / Location は、以降の説明と同じ順序で使用してください。順序を変更することはできません。

<VirtualHost *:80>
    ServerName myconfluence.com
	ProxyRequests Off

	# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
	<Proxy *>
		Require all granted
	</Proxy>

	ProxyPass /synchrony http://<internal_domain>:8091/synchrony
	<Location /synchrony>
		Require all granted
		RewriteEngine on
		RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
		RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
		RewriteRule .* ws://<internal_domain>:8091%{REQUEST_URI} [P]
	</Location>

	ProxyPass / http://<internal_domain>:8090/
	ProxyPassReverse / http://<internal_domain>:8090/
	<Location />
		Require all granted
	</Location>
</VirtualHost>

これは、Confluence がコンテキスト パスなしでアクセス可能で、Confluence の内部プロキシを使用していない場合の、標準的な例です。その他のプロキシ設定オプションについては「共同編集を管理する」をご参照ください。

仮想ホストの設定や各ディレクティブの使用方法の完全な詳細情報については、https://httpd.apache.org/docs/2.4/vhosts/ をご参照ください。

3. Apache を再起動する

Debian および Ubuntu

以下を使用して、コマンド ラインから Apache を再起動します。

$ sudo service apache2 restart

Fedora および CentOS

以下を使用して、コマンド ラインから Apache を再起動します。

$ sudo apachectl graceful

systemd を使用して Apache を再起動することもできます。CentOS の場合の例は次のようになります。

$ sudo systemctl restart httpd.service

Windows

Apache サービスを停止および開始するには、[コントロール パネル] > [管理ツール] > [サービス] に移動し、"Apache2" を見つけ、それを選択します。メニュー バーから停止ボタン (四角形) を選択し、サービスのステータスが [停止] になるまで待ちます。サービスが停止したら、開始ボタン (三角形) を選択し、ステータスが [開始] になるまで待ちます。

4. CentOS の SELinux ポリシーを変更する

CentOS では、httpd のネットワークへの接続を SELinux ポリシーが既定でブロックします。この場合、httpd error_log に次のような "permission denied" メッセージが表示されます。

[Sat Mar 19 00:29:45.722758 2016] [proxy:error] [pid 5958] (13)Permission denied: AH00957: HTTP: attempt to connect to 127.0.0.1:8090 (localhost) failed

次のコマンドを使用して、httpd プロセスについての SELinux ポリシーを手動で変更する必要があります。

$ sudo /usr/sbin/setsebool -P httpd_can_network_connect 1


5. X-Forwarded-For ヘッダーを有効にする

これは、プロキシ IP ではなく origin IP (プロキシに接続しているユーザー) をアトラシアン アプリケーションに送信するようにするための、オプションのステップです。この設定は、リクエストを送信しているユーザーの追跡に役立ちます。設定を行わない場合、リバース プロキシによってユーザーの IP がマスクされる可能性があります。この変更を行うと、アクセス ログにはプロキシだけではなく、クライアントの IP がプロキシとともに記録されます。これを実現するには、次の手順を実行します。

  1. mod_remoteip モジュールを有効化します。
  2. 以下を適切な仮想ホストに追加します。

    RemoteIPHeader X-Forwarded-For
  3. Apache を再起動またはリロードします。

パート C. 最終設定

各アプリケーションを再起動する

各アプリケーションを再起動し、新しい URL を使用してアクセスできることを確認します。 上述の停止と開始についての手順をご確認ください。

アプリケーションのベース URL を設定する

各アトラシアン アプリケーションで、プロキシで構成したアドレスをベース URL として設定します。これは Apache HTTP Server が提供する URL です (例: http://www.example.com/<atlassianapp >)。

HTTP 圧縮を無効にする

プロキシと Tomcat の両方で圧縮を実行すると、アトラシアン アプリケーションを別のアトラシアン アプリケーションと連携する際に問題が発生することがあります。Jira アプリケーションと Confluence では HTTP 圧縮を無効にすることを推奨しています。


説明 This page explains how to establish a network topology in which Apache HTTP Server acts as a reverse proxy for Atlassian server applications. The page has been written as a recipe for success – we recommend you follow it step by step.
製品 Jira, Confluence, Bamboo, Bitbucket, Fisheye, Crucible, Crowd
環境 サーバー
最終更新日 2018 年 11 月 2 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.