Configure Jira to run behind a NGINX reverse proxy
アトラシアン アプリケーションの製品内でリバース プロキシを使用できますが、アトラシアン サポートはその設定についての支援は行いません。つまり、アトラシアンではリバース プロキシに関するあらゆるサポートの提供が保証されません。
設定でサポートが必要な場合、アトラシアン コミュニティに質問を登録してください。
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
目的
このページでは、標準的な Tomcat コンテナで実行されている Jira へのリクエストを Nginx を使用してプロキシする方法を紹介します。Apache mod_proxy を使用して同じ目的を実現する方法についてのドキュメントが提供されています。
ソリューション
この例では、http://www.atlassian.com/jira アドレス (標準 HTTP ポート 80) でアクセス可能な Jira をセットアップします。Jira はポート 8080 でリッスンし、/jira
のコンテキスト パスを使用します。
コンテキスト パスの設定
http://jira.atlassian.com で Jira を提供したい場合はこのセクションをスキップします。
Jira のアプリケーション パス (ホスト名とポートに続く部分) を設定します。Tomcat (Jira に同梱) でこれを行うには、
<Jira-Install>/conf/server.xml
を編集して"Context" 定義を見つけます。<Context docBase="${catalina.home}/atlassian-jira" path="" reloadable="false" useHttpOnly="true">
path
を次のように変更します。<Context docBase="${catalina.home}/atlassian-jira" path="/jira" reloadable="false" useHttpOnly="true">
- Jira を再起動し、ベース URL (例: http://www.atlassian.com/jira) でアクセスできることを確認します。ダッシュボード設定についてのエラーが表示される場合がありますが、これは次のセクションで修正します。
コネクタの設定
HTTP コネクタを設定し、1 つをプロキシ コネクタとしてサービスを提供し、もう 1 つでトラブルシューティングを行えるようにします。これは同じ <Jira インストール>/
conf/server.xml
ファイルで行なえます。次のコード セグメントを見つけます。<Connector port="8080" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/>
proxyName
およびproxyPort
要素 (対象のプロパティを置き換え)、および別のコネクタを次のように追加します。これはプロキシをバイパスし、トラブルシューティングに使われます。<!-- Nginx Proxy Connector without http scheme --> <Connector port="8080" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" proxyName="www.atlassian.com" proxyPort="80"/> <!-- OPTIONAL,Nginx Proxy Connector with https scheme--> <Connector port="8081" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" proxyName="www.atlassian.com" proxyPort="443" scheme="https" secure="true"/> <!-- Standard HTTP Connector without any proxy config --> <Connector port="8082" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/>
Nginx の設定
Nginx 設定を更新し、次のように
server
を持つようにします (www.atlassian.com
を FQDN、jira-hostname
をサーバーのホスト名で置き換え)。server { listen www.atlassian.com:80; server_name www.atlassian.com; location /jira { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://jira-hostname:8080/jira; client_max_body_size 10M; } }
アプリケーション要件に合わせて client_max_body_size の値を変更するのを忘れないようにしてください。
Nginx のデフォルトでは 1 MB のファイルを Jira に添付できます。このため、Jira にアップロード可能な添付ファイルの最大サイズを設定するにはパラメーター client_max_body_size が必須です。
A more complex nginx config for SSL connection is below, note the <variables> have to be configured specifically for your system:
server { listen <ip_address>:443 ssl; server_name <jira_base_fqdn>; ssl_certificate /usr/local/psa/var/certificates/scfBrNudT; ssl_certificate_key /usr/local/psa/var/certificates/scfBrNudT; client_max_body_size 134217728; access_log "/var/www/vhosts/system/_.technios.com/logs/proxy_access_ssl_log"; error_log "/var/www/vhosts/system/_.technios.com/logs/proxy_error_log"; root "<local_httpdocs>"; #extension letsencrypt begin location ^~ /.well-known/acme-challenge/ { root <local_htdocs>; types { } default_type text/plain; satisfy any; auth_basic off; allow all; location ~ ^/\.well-known/acme-challenge.*/\. { deny all; } } #extension letsencrypt end #extension sslit begin #extension sslit end location / { proxy_pass https://<ip_address>:<local_proxy_port>; proxy_hide_header upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } proxy_connect_timeout 180s; proxy_send_timeout 180s; proxy_read_timeout 180s; fastcgi_send_timeout 180s; fastcgi_read_timeout 180s; }
- SSL を設定する場合は https://mozilla.github.io/server-side-tls/ssl-config-generator/ の手順に従ってプロファイルを生成します。
HTTP を HTTPS にリダイレクトしたい場合、上記のブロックの代わりに以下の内容を利用できます (
www.atlassian.com
を FQDN で置き換えるようにします)。server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name atlassian.com www.atlassian.com; return 301 https://$server_name$request_uri; }
- 「Jira サーバーのアプリケーション アクセス ページの変更時にページが古くなった旨のエラーが表示される」に従い、Jira でネイティブ zip 圧縮が有効化されていることを確認します。これを有効化すると、Nginx の gzip 圧縮がデメリットなしでオーバーライドされます。
- Nginx を再起動します。
Jira のテスト
- Jira を再起動し、ベース URL (例: http://www.atlassian.com/jira) と 8081 ポート (例: http://www.atlassian.com:8080/jira) でアクセスできることを確認します。
- Jira の通常運用についてはベース URL も適切に設定する必要があります。この例ではベース URL を http://www.atlassian.com/jira に設定します。
注意
- 上記の設定を有効化するには Jira と Nginx 両方の再起動が必要です。
Stash へのリンク時にトリガー作成で問題が発生する場合は「Nginx の利用時に Jira で Stash トリガーを作成できない」のソリューションをご確認ください。
Jira の特定のページで読み込みの問題が発生している場合、proxy_buffer_size を 8k に増やす必要があります。proxy_buffer_size のデフォルト値はご利用のシステムのページ サイズに設定されており、これは x86/x86_64 で 4k です。
入力情報の検証で問題が発生した場合、リバース プロキシで有効化されている gzip 圧縮が影響している可能性があります。この問題は「Jira で Confluence ガジェットの作成に失敗する」記事で説明されています。