

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定代理伺服器
<a name="java-tomcat-proxy"></a>

Tomcat 平台使用 [nginx](https://www.nginx.com/) (預設值) 或 [Apache HTTP 伺服器](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 之前)，請閱讀本節中的其他資訊。

**備註**  
本主題中的資訊僅適用於以 Amazon 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 會根據 Amazon Linux AMI (AL1) 將所有平台分支的狀態設定為**已淘汰**。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊，請參閱 [將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md)。

### 為您的 Tomcat 環境選擇代理伺服器 — Amazon 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/) 作為代理。您可以選擇使用 [Apache 2.2](https://httpd.apache.org/docs/2.2/) 或 [nginx](https://www.nginx.com/)，做法是將[組態檔案](ebextensions.md)包含在原始碼中。下列範例設定 Elastic Beanstalk 使用 nginx。

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

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

### 從 Apache 2.2 遷移到 Apache 2.4 — Amazon 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 組態入門，與 [Java 和更新於 2018 年 5 月 24 日的 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 平台的預設 Proxy。Apache 2.4`.conf` 檔案大多數與 Apache 2.2 的舊版相容，但不是全部如此。Elastic Beanstalk 包含與每個 Apache 版本正常運作的預設 `.conf` 檔案。如果您的應用程式不自訂 Apache 的組態，如 [擴展和覆寫預設的 Apache 組態 — Amazon Linux AMI (AL1)](#java-tomcat-proxy-apache) 所述，遷移到 Apache 2.4 應該不會有任何問題。

如果您的應用程式擴展或覆寫 Apache 的組態，您可能需要做一些變更才能遷移到 Apache 2.4。如需詳細資訊，請參閱 *The Apache Software Foundation* 網站上的[從 2.2 升級到 2.4](https://httpd.apache.org/docs/current/upgrading.html)。關於成功地遷移到 Apache 2.4 之前的臨時測量，您可以選擇 Apache 2.2 與您的應用程式搭配使用，做法是將以下[組態檔案](ebextensions.md)納入原始碼。

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

```
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. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇**組態**。

1. 在**更新、監控和日誌記錄**組態類別中，選擇**編輯**。

1. 對於 **Proxy server (代理伺服器)**，請選擇 `Apache 2.2 (deprecated)`。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

![\[在 Elastic Beanstalk 主控台的軟體組態類別中選擇 Tomcat 環境的代理程式\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/java-tomcat-proxy-selection.png)


### 擴展和覆寫預設的 Apache 組態 — Amazon 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 做為其 Proxy，請將 `IncludeOptional` 指令取代為 `Include`。如需有關兩個 Apache 版本的這兩個指令行為的詳細資訊，請參閱[包含在 Apache 2.4 中](https://httpd.apache.org/docs/2.4/mod/core.html#include)、[IncludeOptional 在 Apache 2.4 中](https://httpd.apache.org/docs/2.4/mod/core.html#includeoptional)和[包含在 Apache 2.2 中](https://httpd.apache.org/docs/2.2/mod/core.html#include)。

**注意**  
若要覆寫 80 埠的預設接聽程式，請在 `00_application.conf` 中加入名為 `.ebextensions/httpd/conf.d/elasticbeanstalk/` 的檔案，以覆寫 Elastic Beanstalk 的組態。

如需運作範例，請參見位於您環境執行個體上的 Elastic Beanstalk 預設組態檔案 (`/etc/httpd/conf/httpd.conf`)。在部署作業進行期間，您原始碼套件 `.ebextensions/httpd` 資料夾中的所有檔案，都會複製到 `/etc/httpd`。

### 擴展預設的 nginx 組態 — Amazon 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` 區塊中，會包含 `http` 資料夾中具備 .conf 副檔名的檔案。在 `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;
  ```

如需運作範例，請參見位於您環境執行個體上的 Elastic Beanstalk 預設組態檔案 (`/etc/nginx/nginx.conf`)。在部署作業進行期間，您原始碼套件 `.ebextensions/nginx` 資料夾中的所有檔案，都會複製到 `/etc/nginx`。