配置 Tomcat 环境的代理服务器 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Tomcat 环境的代理服务器

Tomcat 平台使用 nginx(默认)或 Apache HTTP Server 作为反向代理,将实例上来自端口 80 的请求中继到在端口 8080 上侦听的 Tomcat Web 容器。Elastic Beanstalk 提供一个默认代理配置,您可以扩展该配置,也可以使用您自己的配置完全覆盖该配置。

在平台版本上配置代理服务器

所有 AL2023/AL2 平台都支持统一的代理配置功能。有关在运行 AL2023/AL2 的平台版本上配置代理服务器的更多信息,请展开 扩展 Elastic Beanstalk Linux 平台 中的反向代理配置部分。

如果您的 Elastic Beanstalk Tomcat 环境使用 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前),请阅读本节中的其他信息。

注意

默认情况下,基于 Amazon Linux AMI(在 Amazon Linux 2 之前)的 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 的信息。

从 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 配置 — Amazon Linux AMI (AL1)中所述),它应准确无误地迁移到 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 控制台,然后在 Regions(区域)列表中选择您的 Amazon Web Services 区域。

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration(配置)。

  4. Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。

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

  6. 要保存更改,请选择页面底部的 Apply(应用)。


            在 Elastic Beanstalk 控制台的软件配置类别中为 Tomcat 环境选择代理

您可以使用其他配置文件扩展 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 上的默认侦听器,请在 00_application.conf 处包含一个名为 .ebextensions/httpd/conf.d/elasticbeanstalk/ 的文件,以覆盖 Elastic Beanstalk 配置。

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

要扩展 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 上的默认侦听器,请在 00_application.conf 处包含一个名为 .ebextensions/nginx/conf.d/elasticbeanstalk/ 的文件,以覆盖 Elastic Beanstalk 配置。

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

    include conf.d/*.conf;

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