プロキシサーバーを設定します - AWS Elastic Beanstalk

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

プロキシサーバーを設定します

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

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

注記

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

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

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

Elastic Beanstalk Node.js 環境で (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 に移行する」を参照してください。

Node.js プラットフォームではリバースプロキシを使用して、インスタンスのポート 80 から、ポート 8081 でリッスンしているアプリケーションにリクエストを中継します。Elastic Beanstalk にはデフォルトのプロキシ設定が用意されています。これは拡張することも、独自の設定で完全に上書きすることもできます。

デフォルト設定を拡張するには、設定ファイルで .conf/etc/nginx/conf.d ファイルを追加します。具体的な例については、「Node.js を実行している EC2 インスタンスで HTTPS を終了する」を参照してください。

Node.js プラットフォームでは、プロキシサーバーがトラフィックを渡すポートに PORT 環境変数を設定します。コードでこの変数を読み取って、アプリケーションのポートを設定します。

var port = process.env.PORT || 3000; var server = app.listen(port, function () { console.log('Server running at http://127.0.0.1:' + port + '/'); });

デフォルトの NGINX 設定では、127.0.0.1:8081 にある nodejs という名前のアップストリームサーバーにトラフィックを転送します。デフォルト設定を削除し、設定ファイルに独自の設定を指定することができます。

例 .ebextensions/proxy.config

次の例では、デフォルト設定を削除し、ポート 8081 ではなく 5000 にトラフィックを転送するカスタム設定を追加します。

files: /etc/nginx/conf.d/proxy.conf: mode: "000644" owner: root group: root content: | upstream nodejs { server 127.0.0.1:5000; keepalive 256; } server { listen 8080; if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { set $year $1; set $month $2; set $day $3; set $hour $4; } access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; access_log /var/log/nginx/access.log main; location / { proxy_pass http://nodejs; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } gzip on; gzip_comp_level 4; gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; location /static { alias /var/app/current/static; } } /opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh: mode: "000755" owner: root group: root content: | #!/bin/bash -xe rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf service nginx stop service nginx start container_commands: removeconfig: command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"

設定例 (/etc/nginx/conf.d/proxy.conf) では、/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf のデフォルト設定をベースとして使用し、圧縮とログの設定および静的なファイルマッピングでデフォルトのサーバーブロックを含めます。

removeconfig コマンドでは、コンテナのデフォルト設定を削除し、プロキシサーバーでカスタム設定が使用されるようにします。Elastic Beanstalk は、各構成がデプロイされるときにデフォルト設定を再作成します。これを考慮して、次の例では、設定のデプロイ後のフック (/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh) が追加されます。これにより、デフォルト設定が削除され、プロキシサーバーが再起動されます。

注記

デフォルト設定は、Node.js プラットフォームの今後のバージョンで変更される可能性があります。カスタマイズのベースとして、最新バージョンの設定を使用して互換性を確保します。

デフォルト設定を上書きする場合は、静的なファイルマッピングと GZIP 圧縮を定義する必要があります。これは、プラットフォームが標準設定を適用できないためです。