リバースプロキシを設定する - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リバースプロキシを設定する

Elastic Beanstalk は、リバースプロキシとして nginx を使用し、ポート 80 の Elastic Load Balancing ロードバランサーにアプリケーションをマッピングします。Elastic Beanstalk では、デフォルトの nginx 設定が用意されています。これは拡張することも、独自の設定で完全に上書きすることもできます。

デフォルトでは、Elastic Beanstalk はポート 5000 でアプリケーションにリクエストを送信するように nginx プロキシを設定します。デフォルトのポートを上書きするには、PORT 環境プロパティを、主要なアプリケーションがリッスンするポートに設定します。

注記

アプリケーションがリッスンしているポートは、ロードバランサーからリクエストを受信するために nginx サーバーがリッスンするポートに影響を与えません。

ご使用のプラットフォームバージョンでプロキシサーバーを設定する

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

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

メモ
  • このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。AL2023/AL2 プラットフォームブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、別の構成設定が必要です。

  • 2022 年 7 月 18 日、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて廃止されます。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する」を参照してください。

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

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- conf.d | `-- myconf.conf `-- web.jar

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

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- nginx.conf `-- web.jar

Elastic Beanstalk の nginx 設定を上書きするには、nginx.conf に以下の行を追加することにより、拡張状態ヘルスレポートおよびモニタリング、自動アプリケーションマッピング、および静的ファイルに関して Elastic Beanstalk の設定を適用します。

include conf.d/elasticbeanstalk/*.conf;

以下に示す Scorekeep サンプルアプリケーションの設定例では、Elastic Beanstalk のデフォルトの設定をオーバーライドし、public/var/app/currentサブディレクトリにある静的ウェブアプリケーションを処理します。このサブディレクトリは、Java SE プラットフォームによってアプリケーションのソースコードがコピーされる場所です。/api の場所は、/api/ のルートへのトラフィックを、ポート 5000 でリッスンしている Spring アプリケーションに転送します。他のすべてのトラフィックは、ルートパスでウェブアプリによって処理されます。

user nginx; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofile 33282; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; include conf.d/*.conf; map $http_upgrade $connection_upgrade { default "upgrade"; } server { listen 80 default_server; root /var/app/current/public; location / { }git pull location /api { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_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 /var/log/nginx/access.log main; client_header_timeout 60; client_body_timeout 60; keepalive_timeout 60; gzip off; gzip_comp_level 4; # Include the Elastic Beanstalk generated locations include conf.d/elasticbeanstalk/01_static.conf; include conf.d/elasticbeanstalk/healthd.conf; } }