メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

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

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

Elastic Beanstalk のデフォルトの nginx 設定を拡張するには、アプリケーションソースバンドルの .ebextensions/nginx/conf.d/ というフォルダに .conf 設定ファイルを追加します。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 のデフォルトの設定をオーバーライドし、/var/app/currentpublic サブディレクトリから静的ウェブアプリケーションを処理します。ここで、Java SE プラットフォームがアプリケーションのソースコードをコピーします。/api の場所は、/api/ のルートへのトラフィックを、ポート 5000 でリッスンしている Spring アプリケーションに転送します。他のすべてのトラフィックは、ルートパスでウェブアプリによって処理されます。

.ebextensions/nginx/nginx.conf

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 / { } 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; } }