配置反向代理 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置反向代理

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

默认情况下,Elastic Beanstalk 将 nginx 代理配置为通过端口 5000 向您的应用程序转发请求。您可以覆盖默认端口,方法是将 PORT 环境属性设置为主应用程序侦听的端口。

注意

应用程序侦听的端口不会影响 nginx 服务器为了从负载均衡器接收请求而侦听的端口。

所有 Amazon Linux 2 平台都支持统一的代理配置功能。有关在运行 Amazon Linux 2 的新 Amazon Corretto 平台版本上配置代理服务器的详细信息,请展开扩展 Elastic Beanstalk Linux 平台中的反向代理配置部分。

在 Amazon Linux AMI(在 Amazon Linux 2 之前)上配置代理

如果您的 Elastic Beanstalk Java SE 环境使用 Amazon Linux AMI 平台版本(在 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 的默认配置,以从 /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; } }