Apache HTTP サーバー(mod_proxy_ajp)で Atlassian のサーバーアプリケーションを プロキシーする

Starting from version 4.0, Fisheye has stopped support for the AJP authentication. For more information, see End of Support Announcements for Fisheye.

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

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

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

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

  • at their own domains, such as  http://our<atlassianapp>.com/
  • at subdomains of another domain, such as http://my<atlassianapp>.ourcompany.com/
  • at context paths on either a domain or subdomain, such as http://ourcompany.com/my<atlassianapp>
  • 異なる HTTP ポート (例: 9800、9850 など)

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

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

As of Bitbucket Server 5.0, it is not possible to configure AJP between your proxy and Tomcat server.

  • Jira Server アプリケーション (Jira Software Server、Jira Core、Jira Service Desk)
  • Confluence Server (5.10 and earlier)
  • Bamboo Server
  • Bitbucket Server (4.14 and earlier)
  • Fisheye
  • Crucible
  • Crowd

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

Atlassian server applications bundle a web server, which allows them to run without needing a proxy server. For most Atlassian applications, the bundled web server is Apache Tomcat (Fisheye and Crucible use Jetty). 

Consequently, you need to configure both Tomcat (or Jetty if using Fisheye or Crucible) and Apache HTTP Server when proxying an Atlassian application.

前提条件

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

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

You may find it helpful to refer to the Apache HTTP Server Documentation, which describes how you can control Apache HTTP Server by editing the httpd.conf file. The sections on Apache Module mod_proxy and Apache Module mod_ajp are particularly relevant. Note that any changes you make to the httpd.conf file will only be effective after restarting Apache HTTP Server.

ドメインの 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

If you're proxying Fisheye or Crucible, you must set the AJP Bind Address per Fisheye instance fr

om the admin area. See  Configuring the Fisheye web server.

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

If you're using any of the other Atlassian server applications, you will need to enable the AJP Connector on the Tomcat container by uncommenting a line similar to the following:

<Connector port="8009" URIEncoding="UTF-8" enableLookups="false" protocol="AJP/1.3" />

If that doesn't exist in your server.xml configuration, you'll need to add the element yourself, following the eample above. You can choose a port of your liking and configure it as described on Changing port that your Atlassian application listens on.

Please keep in mind that we have the the port 8009 commented out in a few of the server.xml we ship on different applications. If you are running multiple applications on the same server they'll need to have their ports changed to a different value, otherwise you will have a port conflict.

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

1. Enable the mod_proxy_ajp modules in Apache

The preferred configuration is Proxying Atlassian server applications with Apache HTTP Server (mod_proxy_http). This works with any application server, and together with mod_proxy_html allows complex URL rewriting to deal with different application paths on the web server and the application server.

In addition, note that mod_jk and mod_jk2 are other commonly used AJP modules and not covered by this documentation.

 

 

Debian / Ubuntu での手順を展開して確認
  1. 以下の方法で、モジュールを有効化します:

    $ sudo a2enmod proxy_ajp
    Considering dependency proxy for proxy_ajp:
    Module proxy already enabled
    Enabling module proxy_ajp.
    To activate the new configuration, you need to run:
    service apache2 restart
  2. Apache を再起動します。
Fedora / CentOS での手順を展開して確認

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

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

Windows/その他の OS 向け解説を詳しく見る
  1. httpd.conf ファイルを編集し、以下の行を加えます:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
  2. Apache を再起動します。

2. Configure the virtual hosts using mod_proxy_ajp

More information can be found on Apache Module mod_proxy_ajp.

  • Note that for CentOS, the preferred approach is to add the virtual host block to a separate configuration file for each application in /etc/httpd/conf.d/, for example named confluence-vhost.conf and jira-vhost.conf
  • Note that for Debian, the preferred approach is to add the virtual host block to a separate configuration file for each application in  /etc/apache2/sites-available/<site>, for example named confluence.conf and/or jira.conf. These should be based on the default template, 000-default.con.


The example below is for one single application running behind a reverse proxy configured with Name-Based Virtual Hosts:

<VirtualHost *:80>
    ServerName <subdomain>.<domain>.com
     
    ProxyRequests Off
    
    <Proxy *>
         Require all granted
    </Proxy>
 
    ProxyPass /<contextpath> ajp://<domain>:<port>/<contextpath>
    ProxyPassReverse /<contextpath> ajp://<domain>:<port>/<contextpath>
</VirtualHost>

If you have multiple applications running behind the same proxy, you can configure the following ways using Name-Based Virtual Hosts:

  • Use a single Name-Based Virtual Host if the Atlassian applications are under the same domain but different context paths. For example:

    <VirtualHost *:80>
        ServerName mycompany.com
         
        ProxyRequests Off
         
        <Proxy *>
             Require all granted
        </Proxy>
     
        ProxyPass /jira ajp://mycompany.com:8080/jira
        ProxyPassReverse /jira ajp://mycompany.com:8080/jira
     
        ProxyPass /bitbucket ajp://mycompany.com:7990/bitbucket
        ProxyPassReverse /bitbucket ajp://mycompany.com:7990/bitbucket
    </VirtualHost>
  • Use multiple Name-Based Virtual Hosts if each application is on a different domain:

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


For more information about virtual hosts see https://httpd.apache.org/docs/2.4/vhosts/.

仮想ホストブロック内の指示文は、次の機能を実行します。

指示文 機能


<VirtualHost *:80>


特定の仮想ホスト用のディレクティブの構成

Use the character * as a wildcard to match all IP addresses, with the default port of 80. This causes Apache to match requests on the ServerName values of the virtual hosts.

See the Apache 2.4 VirtualHost documentation.


ServerName <subdomain>.<domain>.com


サーバーを特定します

The ServerName directive can be used to set the request scheme, hostname and port that the server uses to identify itself.

例:

The ServerName directive should not include the context path.

See the Apache 2.4 ServerName documentation.


ProxyRequests Off
フォワードプロキシをオフにします

この指示文は、Apache にフォワードプロキシをオフにするよう指示します。Apache HTTP サーバーをリバースプロキシとしてのみ使用していて、フォワードプロキシとしては使用していない場合、この指示文を含めるだけでかまいません。

See the Apache 2.4 ProxyRequests documentation.


<Proxy *>
 Require all granted
</Proxy>


任意の場所からアトラシアンのアプリケーションへのプロキシを許可します

Strictly speaking, this step is unnecessary because access to proxied resources is unrestricted by default. Nevertheless, we explicitly allow access to the Atlassian application from any host so that this policy will be applied regardless of any subsequent changes to access controls at the global level. The Proxy directive provides a context for the directives that are contained within its delimiting tags. In this case, we specify a wild-card URL (the asterisk), which applies the contained directive to all proxied requests.

See the Apache 2.4 Proxy directive documentation.

Apache 2.2では、代わりに以下を使用する必要があることに注意してください。

<Proxy *>
    Order Deny,Allow
    Allow from all
</Proxy>

The Order directive controls the order in which any Allow and Deny directives are applied. In the above configuration, we specify "Deny,Allow", which tells Apache HTTP Server to apply any Deny directives first, and if any match, the request is denied unless it also matches an Allow directive. In fact, "Deny,Allow" is the default; we include it merely for the sake of clarity. Note that we specify one Allow directive, which is described below, and don't specify any Deny directives. The Allow directive, in this context, controls which hosts can access the Atlassian application via Apache HTTP Server. Here, we specify that all hosts are allowed access.

Apache 2.2 Proxy 指示文のドキュメントを参照してください。


ProxyPass /<contextpath> ajp://<domain>:<port>/<contextpath>

ProxyPassReverse /<contextpath> ajp://<domain>:<port>/<contextpath>


These directives tell Apache HTTP Server to forward requests of the form  http://example.com/*  to port 8080 on the same machine, which is the port we configured Tomcat to listen on above.

The example below shows how to use the context path ( /<atlassianapp>described above with mod_proxy. If you're not using a context path, you can omit that from your ProxyPass and ProxyPassReverse directives: 

ProxyPass /<contextpath> ajp://<domain>:<port>/<contextpath>
ProxyPassReverse /<contextpath> ajp://<domain>:<port>/<contextpath>

ドメイン名またはポートの後に「/」を追加します。

The example below shows how to access the application at the  private.example.com  subdomain, with the context path /<atlassianapp>, and connecting to Tomcat on port 9900:

ProxyPass        /<atlassianapp> ajp://private.example.com:9900/<atlassianapp>
ProxyPassReverse /<atlassianapp> ajp://private.example.com:9900/<atlassianapp>

Don't use a trailing '/' after a context path.Note that you could use localhost instead of <domain> if you are running the Atlassian application on the same machine as Apache.

See the Apache 2.4  ProxyPass and  ProxyPassReverse  directives documentation.


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 ポリシーを変更する

For CentOS, the SELinux policy blocks httpd from connecting with the network by default. In this case you'll see a "permission denied" message in the  httpd error_log similar to this:

[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

パート C. 最終設定

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

ここで、 各アプリケーションを再起動し、新しい URL を使用してアクセスできることを確認します。停止と起動についての前述の説明を参照してください。

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

For each Atlassian application, set the Base URL to the address you configured in the proxy, which is the URL that Apache HTTP Server will be serving (such as http://www.example.com/<atlassianapp>).

Jira アプリケーション ベース URL の設定
Confluence サーバー ベース URL の設定

Bamboo Server

Bamboo の URL の指定
Bitbucket Server Bitbucket Server のベース URL を指定する
Fisheye Fisheye web サーバーを設定する」の「Site URL」を参照
Crucible Fisheye と同様
Crowd Crowd のベース URL の変更方法
最終更新日: 2018 年 9 月 11 日

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

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