AJP プロトコルを利用して Apache リバースプロキシを構成する

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

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

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

Apache Tomcat の “Ghostcat” 脆弱性について

このガイドに従うと、ご利用の Jira インスタンスが Apache Tomcat で最近見つかったリスクの高い脆弱性にさらされる可能性があります。

詳細を読む...

この問題を修正したバージョンの Tomcat が Jira にバンドルされるまで、お待ちいただくことをおすすめします。このバージョンがリリースされたらこの注意書きを更新します。この脆弱性について詳しくは、以下をご覧ください。

それまでの間に AJP コネクタを使用する必要がある場合、この問題を緩和するために実施できる手順があります。詳細については、こちらの記事をご参照ください。

本ページでは、mod_proxy_aip を利用して、Apache HTTP サーバー (httpd) と Jira を連携する手順について説明します。これにより Apache はリバース プロキシとして動作します。AJP はワイヤプロトコルおよび最適化された HTTP プロトコルで、Apache 等のスタンドアロン Web サーバーと Tomcat との通信を実現します。

このプロトコルは、以下のいずれかの Apache の設定で HTTP/1.1 に対して有効です。

このページの内容

ステップ 1: Tomcat を設定する

  1. Jira を停止します。
  2. $JIRA_INSTALL/conf/server.xml の以下の要素のコメントを解除することで、Jira をホストしている Tomcat コンテナの AJP コネクターを有効化します。

    <Connector port="8009" URIEncoding="UTF-8" enableLookups="false" protocol="AJP/1.3" />
  3. Jira を起動します。
  4. Jira に標準 HTTP コネクタでアクセスできるかどうか (例: http://jiraserver:8080) をテストします。これは、Tomcat が再起動に成功しているかどうかを確認するためです。

ステップ 2: Apache HTTP サーバを設定する

Apache のインストールおよび DNS の構成に関しては、本ドキュメントでは扱っていません。また、Apache 2.2 がインストール済みであり、DNS エントリが Jira ドメイン向けに設定されているものと想定しています。Apache の設定は利用する OS によって異なるため、現在、一部のディストリビューションやそこでの設定のみドキュメントが用意されています。

2.1 プロキシモジュールを有効化する

Debian/Ubuntu
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 を再起動します。
Windows/その他の OS
Windows/その他の OS 向け解説を詳しく見る
  1. httpd.conf ファイルを編集し、以下の行を加えます:

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

2.2 これらのモジュールを使用するように、Apacheを設定します

Debian/Ubuntu
Debian / Ubuntu での手順を展開して確認
  1. root ユーザーに切り替えます。
  2. 既存サイトをバックアップするか、新しく作成します。新しいサイトの作成に関しては、本ドキュメントでは扱っていません(デフォルトのコピーで十分なはずです)。
  3. $APACHE_INSTALL/sites-available 内の既存サイトを修正します。例: default (HTTP) または default-ssl (HTTPS)。
  4. VirtualHost に以下の内容を追加し、jiraserver を Jira サーバのホスト名で置き換え、必要に応じてポートを変更します。

    # Jira AJP Proxy Configuration:
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    
    ProxyRequests           Off
    ProxyPass               /       ajp://jiraserver:8009/
    ProxyPassReverse        /       ajp://jiraserver:8009/

    (info) URLの前の/(スラッシュ)を忘れると、プロキシーエラーが発生しますので必ず付け加えてください。

  5. (任意): 次のようにサイトを有効化します

    # a2ensite jira
    Enabling site jira.
    To activate the new configuration, you need to run:
      service apache2 reload

    (info) これは、新規サイトがデフォルトを利用して作成された場合にのみ必要となります。

  6. HTTP を利用している場合、ステップ 8 まで飛ばします。HTTPS においては、証明書と秘密キーを適切なディレクトリにコピーする事で証明書をインストールし、また以下をサイトに追加する必要があります:

    SSLProxyEngine          On
  7. 以下の設定を Apache 設定の VirtualHost に含めます。

    SSLCertificateFile    /etc/ssl/certs/jira.crt
    SSLCertificateKeyFile /etc/ssl/private/jira.key
  8. Apache の設定をリロードします。
  9. Test by accessing Jira through Apache, for example http://jira.com or http://atlassian.com/jira.
Windows/その他の OS
Windows/その他の OS 向け解説を詳しく見る
  1. httpd.conf ファイルを見つけて編集します。
  2. VirtualHost に以下の内容を追加し、jiraserver を Jira サーバのホスト名で置き換え、必要に応じてポートを変更します。

    # Jira AJP Proxy Configuration:
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    
    ProxyRequests           Off
    ProxyPass               /       ajp://jiraserver:8009/
    ProxyPassReverse        /       ajp://jiraserver:8009/

    (info) URLの前の/(スラッシュ)を忘れると、プロキシーエラーが発生しますので必ず付け加えてください。

  3. HTTPで利用するなら、ステップ5まで飛ばします。HTTPS においては、証明書と秘密キーを適切なディレクトリにコピーする事で証明書をインストールし、また以下をサイトに追加する必要があります:

    SSLProxyEngine          On
  4. 以下の設定を VirtualHost 内の Apache 設定に含めます。

    SSLCertificateFile    /etc/ssl/certs/jira.crt
    SSLCertificateKeyFile /etc/ssl/private/jira.key
  5. Apache を再起動します。
  6. Test by accessing Jira through Apache, for example http://jira.com or http://atlassian.com/jira.

2.3 HTTP を HTTPS にリダイレクトします

これはオプションのステップであり、HTTPS を利用する場合にのみ必要です。これは mod_rewrite (このモジュールは有効化が必要な場合があります) を使用し、HTTP VirtualHost に以下を追加することで行います。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

ステップ 3: Jira を構成する

  1. Jira オプション設定」の通りに、「gzip ファイル圧縮を利用する」設定をオフにします。 GZIP ファイル圧縮は、特にプロキシによるトラフィック圧縮を行う等のリバースプロキシを使った場合に、性能問題を起こすことで知られています。
  2. Set the Base URL to be the FQDN that Jira will be accessed on, for example http://jira.atlassian.com. This is also located in Configuring Jira options.
    (warning) Jira can only be configured to respond to a single URL and the Base URL (as in Configuring Jira options) must match the URL end-users are accessing. Misconfiguration of this may cause significant problems within Jira such as the Activity Stream and Dashboard Gadgets failing to function correctly.
  3. Test by accessing Jira on the FQDN (e.g.: http://jira.atlassian.com), ensuring that Jira is accessible and all dashboard gadgets correctly display.

トラブルシューティング

  • セッションのハイジャック : mod_cache モジュールが有効になっているときにユーザー セッションがハイジャックされることがある問題が報告されています。この問題が発生した場合、mod_cache モジュールを無効にしてみてください。
    (info) 一部の Apache HTTP Server バージョン 2 ディストリビューションではこのモジュールがデフォルトで有効になっています。
  • SELinux を使用する Linux ディストリビューションで mod_proxy (および mod_jk) を有効化した際の Permission Denied エラー : mod_proxy (および mod_jk) を動作させようとすると "permission denied" エラーが発生することが多くのユーザーから報告されています。これは SELinux (/etc/selinux/config) を無効化することで解決できます。
  • Mac OS X 使用時の問題 :  デフォルトでポート 80 を使用する webperfcache, を無効にする必要があります。あるユーザーから、これが以下にあるように Jira セッションにおいてユーザーの識別情報が混乱するという問題が起こる有力な原因だとの指摘が出ています。
    (warning) なお、サポートするプラットフォームに示すように Max OS X は当社のサポート対象ではなく、当社としてはその使用は推奨いたしません。

OSX Server では、バーチャルホスト機能を提供するためにデフォルトで webperfcache を有効にしており、動的インスタンス (JIRA のインスタンスはすべて動的インスタンスです。) に対しては悪影響があり、多くの問題を引き起こします。
中でも最近指摘されている JIRA セッションへの悪影響の問題には注意する必要があります。なお、次の情報も参照してください : 
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/webperfcache.8.html
残念ながら、あるインスタンスで webperfcache を無効化しても、有効になっているインスタンスがひとつでもあると、すべてのインスタンスが引き続き webperfcache をプロキシとして使用するため、セッションに問題が発生します。

  • 過剰なリダイレクト : Tomcat と Apache のどちらかでリダイレクトが行われれば十分である場合において両方でリダイレクトが行われてしまう問題です。これに対しては、Tomcat でのリダイレクトを無効化し、(Running Jira over SSL or HTTPS の説明に従って設定の変更を元に戻します。) その後リダイレクトが Apache のみで行われることを確認します。
  • その他の一般的なトラブル :
    1. ブラウザーのキャッシュを削除してからもう一度試みます。
    2. Ensure that Jira works as expected when running directly from Tomcat and bypassing Apache. For example, accessing http://jiraserver:8080 instead of http://jira.atlassian.com.
    3. より多くの Apache デバッグ情報を得られるようにログレベルを変更して再起動します。
    4. Jira にアクセスし、エラーに対応する Apache ログファイル情報を確認します。
    5. アトラシアン Answers に質問を出して助言を求めます。
  • 403 Forbidden エラー : 
    • Apache 設定ページに RequestHeader unset Authorization 行を追加して、認証ヘッダーを無効化します。

      <Location /jira>
        RequestHeader unset Authorization
        ProxyPreserveHost On
        ProxyPass http://jiraserver/jira
        ProxyPassReverse http://jiraserver/jira
      </Location>

参考資料

最終更新日 2020 年 5 月 7 日

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

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