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

配置 Tomcat 环境的代理服务器

Tomcat 平台使用反向代理将实例上来自于端口 80 的请求中继到在端口 8080 上侦听的 Tomcat Web 容器。Elastic Beanstalk 提供一个默认代理配置,您可以扩展该配置,或者将其完全替换为您自己的配置。

默认情况下,Tomcat 平台将使用 Apache 2.4 作为代理。可以通过将配置文件包括在源代码中来选择使用 Apache 2.2nginx。以下示例配置 Elastic Beanstalk 以使用 nginx。

例 .ebextensions/nginx-proxy.config

option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx

从 Apache 2.2 迁移到 Apache 2.4

如果应用程序是针对 Apache 2.2 开发的,请阅读此部分以了解有关迁移到 Apache 2.4 的信息。

从 Tomcat 平台版本 3.0.0 配置(2018 年 5 月 24 日的 Java with Tomcat 平台更新)开始,Apache 2.4 是 Tomcat 平台的默认代理。Apache 2.4 .conf 文件大多(但不是全部)向后兼容 Apache 2.2 的此类文件。Elastic Beanstalk 包含可与每个 Apache 版本一起正常运行的默认 .conf 文件。如果应用程序未自定义 Apache 的配置 (如扩展并覆盖默认 Apache 配置中所述),它应准确无误地迁移到 Apache 2.4。

如果应用程序扩展或覆盖 Apache 的配置,可能必须进行一些更改才能迁移到 Apache 2.4。有关更多信息,请参阅 Apache 软件基金会 站点上的从 2.2 升级到 2.4。在成功迁移到 Apache 2.4 之前,可以通过在源代码中包括以下配置文件作为临时措施,选择将 Apache 2.2 与应用程序一起使用。

例 .ebextensions/apache-legacy-proxy.config

option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache/2.2

对于快速修复,还可以选择 Elastic Beanstalk 控制台中的代理服务器。

在 Elastic Beanstalk 控制台中选择 Tomcat 环境中的代理

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. Software 配置卡上,选择 Modify

  5. 对于 Proxy server (代理服务器),请选择 Apache 2.2 (deprecated)

  6. 选择 Apply


        在 Elastic Beanstalk 控制台的软件配置卡上为 Tomcat 环境选择代理

扩展并覆盖默认 Apache 配置

可以使用其他配置文件扩展 Elastic Beanstalk 默认 Apache 配置。或者,可以完全覆盖 Elastic Beanstalk 默认 Apache 配置。

要扩展 Elastic Beanstalk 默认 Apache 配置,请将 .conf 配置文件添加到应用程序源包中名为 .ebextensions/httpd/conf.d 的文件夹中。Elastic Beanstalk Apache 配置将自动包含此文件夹中的 .conf 文件。

~/workspace/my-app/ |-- .ebextensions | -- httpd | -- conf.d | -- myconf.conf | -- ssl.conf -- index.jsp

例如,以下 Apache 2.4 配置将在端口 5000 上添加一个监听器。

例 .ebextensions/httpd/conf.d/port5000.conf

listen 5000 <VirtualHost *:5000> <Proxy *> Require all granted </Proxy> ProxyPass / http://localhost:8080/ retry=0 ProxyPassReverse / http://localhost:8080/ ProxyPreserveHost on ErrorLog /var/log/httpd/elasticbeanstalk-error_log </VirtualHost>

要完全覆盖 Elastic Beanstalk 默认 Apache 配置,请在您的源包的 .ebextensions/httpd/conf/httpd.conf 处包含一个配置。

~/workspace/my-app/ |-- .ebextensions | `-- httpd | `-- conf | `-- httpd.conf `-- index.jsp

如果要覆盖 Elastic Beanstalk Apache 配置,请将以下行添加到 httpd.conf 以加入适用于增强型运行状况报告和监控、响应压缩和静态文件的 Elastic Beanstalk 配置。

IncludeOptional conf.d/*.conf IncludeOptional conf.d/elasticbeanstalk/*.conf

如果环境使用 Apache 2.2 作为其代理,则将 IncludeOptional 指令替换为 Include。有关这两个指令在两个 Apache 版本中的行为的详细信息,请参阅 Apache 2.4 中的 IncludeApache 2.4 中的 IncludeOptionalApache 2.2 中的 Include

注意

要覆盖端口 80 上的默认侦听器,请在 .ebextensions/httpd/conf.d/elasticbeanstalk/ 处包含一个名为 00_application.conf 的文件,以覆盖 Elastic Beanstalk 配置。

对于工作中的示例,请查看环境中实例上 /etc/httpd/conf/httpd.conf 处的 Elastic Beanstalk 默认配置文件。您的源包中 .ebextensions/httpd 文件夹内的所有文件均已在部署期间被复制到 /etc/httpd

扩展默认 nginx 配置

要扩展 Elastic Beanstalk 的默认 nginx 配置,请将 .conf 配置文件添加到您的应用程序源包中名为 .ebextensions/nginx/conf.d/ 的文件夹中。Elastic Beanstalk nginx 配置将自动包含此文件夹中的 .conf 文件。

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- conf.d | |-- elasticbeanstalk | | `-- my-server-conf.conf | `-- my-http-conf.conf `-- index.jsp

conf.d 文件夹中扩展名为 .conf 的文件均已包括在默认配置的 http 数据块中。conf.d/elasticbeanstalk 文件夹中的文件包括在 server 数据块中的 http 数据块中。

要完全覆盖 Elastic Beanstalk 默认 nginx 配置,请在您的源包的 .ebextensions/nginx/nginx.conf 处包含一个配置。

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- nginx.conf `-- index.jsp

如果要覆盖 Elastic Beanstalk nginx 配置,请将以下行添加到配置的 server 数据块,以加入适用于端口 80 侦听器、响应压缩和静态文件的 Elastic Beanstalk 配置。

include conf.d/elasticbeanstalk/*.conf;

注意

要覆盖端口 80 上的默认侦听器,请在 .ebextensions/nginx/conf.d/elasticbeanstalk/ 处包含一个名为 00_application.conf 的文件,以覆盖 Elastic Beanstalk 配置。

另请将以下行包括在配置的 http 数据块中,以加入适用于增强型运行状况报告和监控和日志记录的 Elastic Beanstalk 配置。

include conf.d/*.conf;

对于工作中的示例,请查看环境中实例上 /etc/nginx/nginx.conf 处的 Elastic Beanstalk 默认配置文件。您的源包中 .ebextensions/nginx 文件夹内的所有文件均已在部署期间被复制到 /etc/nginx