設定您的 Tomcat 環境的代理伺服器 - AWS Elastic Beanstalk

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

設定您的 Tomcat 環境的代理伺服器

Tomcat 平台使用 nginx (預設值) 或 Apache HTTP 伺服器作為反向代理程式,來將執行個體上 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 組態入門,與 Java 和更新於 2018 年 5 月 24 日的 Tomcat 平台一起發行,Apache 2.4 是 Tomcat 平台的預設 Proxy。Apache 2.4.conf 檔案大多數與 Apache 2.2 的舊版相容,但不是全部如此。Elastic Beanstalk 包含與每個 Apache 版本正常運作的預設 .conf 檔案。如果您的應用程式不自訂 Apache 的組態,如 擴展和覆寫預設的 Apache 組態 — Amazon Linux AMI (AL1) 所述,遷移到 Apache 2.4 應該不會有任何問題。

如果您的應用程式擴展或覆寫 Apache 的組態,您可能需要做一些變更才能遷移到 Apache 2.4。如需詳細資訊,請參閱 The Apache Software Foundation 網站上的從 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 (區域) 清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇組態

  4. 更新、監控和日誌記錄組態類別中,選擇編輯

  5. 對於 Proxy server (代理伺服器),請選擇 Apache 2.2 (deprecated)

  6. 若要儲存變更,請選擇頁面底部的儲存變更


            在 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 做為其 Proxy,請將 IncludeOptional 指令取代為 Include。如需有關兩個 Apache 版本的這兩個指令行為的詳細資訊,請參閱包含在 Apache 2.4 中IncludeOptional 在 Apache 2.4 中包含在 Apache 2.2 中

注意

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

如需運作範例,請參見位於您環境執行個體上的 Elastic Beanstalk 預設組態檔案 (/etc/httpd/conf/httpd.conf)。在部署作業進行期間,您原始碼套件 .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 區塊中,會包含 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 組態和記錄。

    include conf.d/*.conf;

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