View a markdown version of this page

配置代理服务器 - AWS Elastic Beanstalk

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

配置代理服务器

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

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

所有 AL2023/AL2 平台都支持统一的代理配置功能。有关在运行 AL2023 /的平台版本上配置代理服务器的更多信息AL2,请参阅反向代理配置。

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

注意

默认情况下,基于 Amazon Linux AMI(在 Amazon Linux 2 之前)的 Tomcat 平台版本为代理使用 Apache 2.4。可以通过将配置文件包括在源代码中来选择使用 Apache 2.2 或 nginx。以下示例将 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 配置 — 亚马逊 Linux AMI () AL1中所述),它应准确无误地迁移到 Apache 2.4。

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

例.ebextensions/ .config apache-legacy-proxy
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache/2.2

为了快速修复,您还可以在 Elastic Beanstalk 控制台中选择代理服务器。

在 Elastic Beanstalk 控制台中选择 Tomcat 环境中的代理
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

  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 中的增强型运行状况报告和监控、响应压缩和静态文件的 Elastic Beanstalk 配置。

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

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

注意

要覆盖端口 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 中的增强型运行状况报告和监控和日志记录的 Elastic Beanstalk 配置。

    include conf.d/*.conf;

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