Tomcat 環境のプロキシサーバーの設定 - AWS Elastic Beanstalk

Tomcat 環境のプロキシサーバーの設定

Tomcat プラットフォームはリバースプロキシとして nginx (デフォルト) または Apache HTTP Server を使用し、インスタンスのポート 80 から、ポート 8080 でリッスンしている Tomcat ウェブコンテナにリクエストを中継します。Elastic Beanstalk では、デフォルトのプロキシ設定が用意されています。これは拡張することも、独自の設定で完全に上書きすることもできます。

すべての Amazon Linux 2 プラットフォームでは、統一されたプロキシ設定機能がサポートされています。Amazon Linux 2 を実行中の Tomcat プラットフォームバージョンでプロキシサーバーを設定する方法の詳細については、「Elastic Beanstalk Linux プラットフォームの拡張」で「リバースプロキシの設定」セクションを展開してください。

(Amazon Linux 2 より前の) Amazon Linux AMI Tomcat プラットフォームでのプロキシの設定

Elastic Beanstalk Tomcat 環境で (Amazon Linux 2 より前の) Amazon Linux AMI プラットフォームバージョンを使用している場合は、このセクションの追加情報をお読みください。

(Amazon Linux 2 より前の) Amazon Linux AMI に基づく Tomcat プラットフォームバージョンは、デフォルトでプロキシに Apache 2.4 を使用します。ソースコードに設定ファイルを含めることにより、Apache 2.2 または nginx を使用する選択ができます。次の例では、nginx が使用されるように Elastic Beanstalk を設定しています。

例 .ebextensions/nginx-proxy.config

option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx

Apache 2.2 向けに開発されたアプリケーションがある場合、Apache 2.4 への移行について理解するには、このセクションをお読みください。

Java with Tomcat プラットフォームの更新 (2018 年 5 月 24 日) とともにリリースされた Tomcat プラットフォームバージョン 3.0.0 の以降の設定では、Tomcat プラットフォームのデフォルトのプロキシは Apache 2.4 です。Apache 2.4 の .conf ファイルは、Apache 2.2 のものと完全な下位互換性がありません。Elastic Beanstalk には、各 Apache バージョンで正しく動作するデフォルトの .conf ファイルが 1 つ含まれています。「デフォルトの Apache 設定の拡張および上書き」で説明されているように、アプリケーションが Apache の設定をカスタマイズしない場合は、Apache 2.4 への移行は問題ありません。

アプリケーションが Apache の設定を拡張または上書きする場合は、Apache 2.4 に移行するためにいくつかの変更を加える必要があります。詳細は、Apache Software Foundation サイトの 2.2 から 2.4 へのアップグレードを参照してください。Apache 2.4 への移行が正常に完了するまで、一時的な対策として、次の設定ファイルをソースコードに含めることで、アプリケーションで Apache 2.2 を使用することができます。

例 .ebextensions/apache-legacy-proxy.config

option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache/2.2

簡単に修正するには、Elastic Beanstalk コンソールでプロキシサーバーを選択することもできます。

Elastic Beanstalk コンソールで Tomcat 環境にプロキシを選択するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] リストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [ソフトウェア] 設定カテゴリで、[編集] を選択します。

  5. [プロキシサーバー] を選択し、[Apache 2.2 (deprecated)] を選択します。

  6. [Apply] を選択します。


            Elastic Beanstalk コンソールのソフトウェア設定カテゴリで Tomcat 環境のプロキシを選択する

追加の設定ファイルを使用して、Elastic Beanstalk のデフォルト Apache 設定を拡張できます。または、Elastic Beanstalk のデフォルトの Apache 設定を完全に上書きすることもできます。

Elastic Beanstalk のデフォルトの Apache 設定を拡張するには、アプリケーションソースバンドルの .ebextensions/httpd/conf.d というフォルダに .conf 設定ファイルを追加します。Elastic Beanstalk の Apache 設定では、このフォルダに .conf ファイルが自動的に含められます。

~/workspace/my-app/ |-- .ebextensions | -- httpd | -- conf.d | -- myconf.conf | -- ssl.conf -- index.jsp

たとえば、次の Apache 2.4 設定では、ポート 5000 にリスナーを追加します。

例 .ebextensions/httpd/conf.d/port5000.conf

listen 5000 <VirtualHost *:5000> <Proxy *> Require all granted </Proxy> ProxyPass / http://localhost:8080/ retry=0 ProxyPassReverse / http://localhost:8080/ ProxyPreserveHost on ErrorLog /var/log/httpd/elasticbeanstalk-error_log </VirtualHost>

Elastic Beanstalk のデフォルトの Apache 設定を完全に上書きするには、ソースバンドルの .ebextensions/httpd/conf/httpd.conf に設定を含めます。

~/workspace/my-app/ |-- .ebextensions | `-- httpd | `-- conf | `-- httpd.conf `-- index.jsp

Elastic Beanstalk の Apache 設定を上書きするには、httpd.conf に以下の行を追加することにより、拡張状態ヘルスレポートおよびモニタリング、レスポンスの圧縮、および静的ファイルに関して Elastic Beanstalk の設定を適用します。

IncludeOptional conf.d/*.conf IncludeOptional conf.d/elasticbeanstalk/*.conf

お使いの環境で Apache 2.2 をプロキシとして使用している場合は、IncludeOptional ディレクティブを Include に置き換えます。2 つの Apache バージョンにおけるこれら 2 つのディレクティブの動作の詳細については、Include in Apache 2.4IncludeOptional in Apache 2.4、および Include in Apache 2.2 を参照してください。

注記

ポート 80 のデフォルトのリスナーを上書きするには、00_application.conf というファイルを .ebextensions/httpd/conf.d/elasticbeanstalk/ に含めて Elastic Beanstalk の設定を上書きします。

実例については、環境内のインスタンスの /etc/httpd/conf/httpd.conf にある Elastic Beanstalk のデフォルト設定ファイルを参照してください。ソースバンドルの .ebextensions/httpd フォルダのすべてのファイルは、デプロイ中に /etc/httpd にコピーされます。

Elastic Beanstalk のデフォルトの nginx 設定を拡張するには、アプリケーションソースバンドル内の .ebextensions/nginx/conf.d/ というフォルダに .conf 設定ファイルを追加します。Elastic Beanstalk の nginx 設定では、このフォルダに .conf ファイルが自動的に含められます。

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- conf.d | |-- elasticbeanstalk | | `-- my-server-conf.conf | `-- my-http-conf.conf `-- index.jsp

conf.d フォルダの拡張子が .conf であるファイルが、デフォルト設定の http ブロックに含まれます。conf.d/elasticbeanstalk フォルダのファイルは、server ブロック内の http ブロックに含まれます。

Elastic Beanstalk のデフォルトの nginx 設定を完全に上書きするには、ソースバンドルの .ebextensions/nginx/nginx.conf に設定を含めます。

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- nginx.conf `-- index.jsp

Elastic Beanstalk の nginx 設定を上書きするには、設定の server ブロックに以下の行を追加することにより、ポート 80 のリスナー、レスポンスの圧縮、および静的ファイルに関して Elastic Beanstalk の設定を適用します。

include conf.d/elasticbeanstalk/*.conf;
注記

ポート 80 のデフォルトのリスナーを上書きするには、00_application.conf というファイルを .ebextensions/nginx/conf.d/elasticbeanstalk/ に含めて Elastic Beanstalk の設定を上書きします。

また、設定の http ブロックに以下の行を含めることにより、拡張状態ヘルスレポートおよびモニタリング およびログ記録に関して Elastic Beanstalk の設定を適用します。

include conf.d/*.conf;

実例については、環境内のインスタンスの /etc/nginx/nginx.conf にある Elastic Beanstalk のデフォルト設定ファイルを参照してください。ソースバンドルの .ebextensions/nginx フォルダのすべてのファイルは、デプロイ中に /etc/nginx にコピーされます。