AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

配置反向代理

Elastic Beanstalk 使用 nginx 作为反向代理以将您的应用程序映射到端口 80 上的 Elastic Load Balancing 负载均衡器。Elastic Beanstalk 提供一个默认 nginx 配置,您可以扩展该配置,或者将其完全替换为您自己的配置。

要扩展 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 的默认配置,从 /var/app/currentpublic 子目录为静态 Web 应用程序提供服务,Java SE 平台也从中复制应用程序源代码。/api 位置转发流量,以在 /api/ 下路由到侦听端口 5000 的 Spring 应用程序。所有其他流量由位于根路径的 Web 应用程序提供服务。

.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; } }