

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

# 配置代理服务器
<a name="java-tomcat-proxy"></a>

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

**在平台版本上配置代理服务器**  
所有 AL2023/AL2 平台都支持统一的代理配置功能。有关在运行 AL2023 /的平台版本上配置代理服务器的更多信息AL2，请参阅[反向代理配置](platforms-linux-extend.proxy.md)。

## 在 Amazon Linux AMI（在 Amazon Linux 2 之前）的 Tomcat 平台上配置代理
<a name="java-tomcat-proxy.alami"></a>

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

**注意**  
本主题中的信息仅适用于基于亚马逊 Linux AMI (AL1) 的平台分支。 AL2023/AL2 平台分支与之前的 Amazon Linux AMI (AL1) 平台版本不兼容，*需要不同的配置设置*。
 [2022 年 7 月 18 日，](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)**Elastic Beanstalk 将所有基于亚马逊 Linux AMI AL1 () 的平台分支的状态设置为停用。**有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息，请参阅 [将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md)。

### 为您的 Tomcat 环境选择代理服务器 — 亚马逊 Linux AMI () AL1
<a name="java-tomcat-proxy.alami"></a>

默认情况下，基于 Amazon Linux AMI（在 Amazon Linux 2 之前）的 Tomcat 平台版本为代理使用 [Apache 2.4](https://httpd.apache.org/docs/2.4/)。可以通过将[配置文件](ebextensions.md)包括在源代码中来选择使用 [Apache 2.2](https://httpd.apache.org/docs/2.2/) 或 [nginx](https://www.nginx.com/)。以下示例将 Elastic Beanstalk 配置为使用 nginx。

**Example .ebextensions/nginx-proxy.config**  

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

### 从 Apache 2.2 迁移到 Apache 2.4 — 亚马逊 Linux AMI () AL1
<a name="java-tomcat-proxy-apache-migrate"></a>

如果应用程序是针对 [Apache 2.2](https://httpd.apache.org/docs/2.2/) 开发的，请阅读此部分以了解有关迁移到 [Apache 2.4](https://httpd.apache.org/docs/2.4/) 的信息。

从 Tomcat 平台版本 3.0.0 配置（随 [2018 年 5 月 24 日的 Java with Tomcat 平台更新](https://aws.amazon.com/releasenotes/release-aws-elastic-beanstalk-platform-update-for-the-java-with-tomcat-platform-on-may-24-2018/)一起发布）开始，Apache 2.4 是 Tomcat 平台的默认代理。Apache 2.4 `.conf` 文件大多 (但不是全部) 向后兼容 Apache 2.2 的此类文件。Elastic Beanstalk 包含可在每个 Apache 版本中正常工作的默认 `.conf` 文件。如果应用程序未自定义 Apache 的配置 (如[扩展并覆盖默认 Apache 配置 — 亚马逊 Linux AMI () AL1](#java-tomcat-proxy-apache)中所述)，它应准确无误地迁移到 Apache 2.4。

如果应用程序扩展或覆盖 Apache 的配置，可能必须进行一些更改才能迁移到 Apache 2.4。有关更多信息，请参阅 *Apache 软件基金会* 站点上的[从 2.2 升级到 2.4](https://httpd.apache.org/docs/current/upgrading.html)。在成功迁移到 Apache 2.4 之前，可以通过在源代码中包括以下[配置文件](ebextensions.md)作为临时措施，选择将 Apache 2.2 与应用程序一起使用。

**Example .ebextensions/ .config apache-legacy-proxy**  

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

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

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

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

1. 对于 **Proxy server**（代理服务器），请选择 `Apache 2.2 (deprecated)`。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

![\[在 Elastic Beanstalk 控制台的软件配置类别中为 Tomcat 环境选择代理\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/java-tomcat-proxy-selection.png)


### 扩展并覆盖默认 Apache 配置 — 亚马逊 Linux AMI () AL1
<a name="java-tomcat-proxy-apache"></a>

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

**注意**  
所有 Amazon Linux 2 平台都支持统一的代理配置功能。有关在运行 Amazon Linux 2 的 Tomcat 平台版本上配置代理服务器的详细信息，请参阅 [反向代理配置](platforms-linux-extend.proxy.md)。
如果您要将 Elastic Beanstalk 应用程序迁移到 Amazon Linux 2 平台，请务必阅读[将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md) 中的信息。

要扩展 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 上添加一个监听器。

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

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

如果环境使用 Apache 2.2 作为其代理，则将 `IncludeOptional` 指令替换为 `Include`。有关这两个指令在两个 Apache 版本中的行为的详细信息，请参见在 Apache 2.4 [中包含、在 Apache 2.4 IncludeOptional ](https://httpd.apache.org/docs/2.4/mod/core.html#include) [中包含和 Apache 2.](https://httpd.apache.org/docs/2.4/mod/core.html#includeoptional) [2 中包含](https://httpd.apache.org/docs/2.2/mod/core.html#include)。

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

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

### 扩展默认 nginx 配置 — 亚马逊 Linux AMI () AL1
<a name="java-tomcat-proxy-nginx"></a>

要扩展 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 中的增强型运行状况报告和监控](health-enhanced.md)和日志记录的 Elastic Beanstalk 配置。  

  ```
      include       conf.d/*.conf;
  ```

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