

**推出 的新主控台體驗 AWS WAF**

您現在可以使用更新後的體驗，在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊，請參閱[使用 主控台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

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

# AWS WAF Classic 如何與 Amazon CloudFront 功能搭配使用
<a name="classic-cloudfront-features"></a>

**警告**  
AWS WAF Classic 正在經歷規劃end-of-life程序。如需區域特定的里程碑和日期，請參閱您的 AWS Health 儀表板。

**注意**  
這是 **AWS WAF Classic** 文件。只有在您在 2019 年 11 月 AWS WAF 之前建立 AWS WAF 規則和 Web ACLs 等資源，且尚未將它們遷移到最新版本時，才應該使用此版本。若要遷移您的 Web ACLs，請參閱 [將您的 AWS WAF Classic 資源遷移至 AWS WAF](waf-migrating-from-classic.md)。  
**如需最新版本的 AWS WAF** ，請參閱 [AWS WAF](waf-chapter.md)。

當您建立 Web ACL 時，您可以指定要 AWS WAF Classic 檢查的一或多個 CloudFront 分佈。 AWS WAF Classic 會根據您在 Web ACL 中識別的條件，開始允許、封鎖或計數這些分佈的 Web 請求。CloudFront 提供一些增強 AWS WAF Classic 功能的功能。本章說明您可以設定 CloudFront 讓 CloudFront 和 AWS WAF Classic 一起運作的幾種方式。

**Topics**
+ [使用 AWS WAF Classic 搭配 CloudFront 自訂錯誤頁面](#classic-cloudfront-features-custom-error-pages)
+ [針對在您自己的 HTTP 伺服器上執行的應用程式使用 AWS WAF Classic 搭配 CloudFront](#classic-cloudfront-features-your-own-http-server)
+ [選擇 CloudFront 回應的 HTTP 方法](#classic-cloudfront-features-allowed-http-methods)

## 使用 AWS WAF Classic 搭配 CloudFront 自訂錯誤頁面
<a name="classic-cloudfront-features-custom-error-pages"></a>

當 AWS WAF Classic 根據您指定的條件封鎖 Web 請求時，它會將 HTTP 狀態碼 403 （禁止） 傳回 CloudFront。接下來，CloudFront 會將該狀態碼傳回給檢視器。檢視器然後會顯示與此相似的簡短且稀疏格式化的預設訊息：

`Forbidden: You don't have permission to access /myfilename.html on this server.`

如果您寧願顯示自訂錯誤訊息，可能使用與網站其他部分相同的格式，您可以設定 CloudFront 將包含自訂錯誤訊息的物件 （例如 HTML 檔案） 傳回給檢視器。

**注意**  
CloudFront 無法區分原始伺服器傳回的 HTTP 狀態碼 403，以及封鎖請求時 AWS WAF Classic 傳回的狀態碼 403。這表示您無法根據不同原因導致 HTTP 狀態碼 403 而傳回不同的自訂錯誤頁面。

如需 CloudFront 自訂錯誤頁面的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[自訂錯誤回應](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html)。

## 針對在您自己的 HTTP 伺服器上執行的應用程式使用 AWS WAF Classic 搭配 CloudFront
<a name="classic-cloudfront-features-your-own-http-server"></a>

當您將 AWS WAF Classic 與 CloudFront 搭配使用時，您可以保護在任何 HTTP Web 伺服器上執行的應用程式，無論是在 Amazon Elastic Compute Cloud (Amazon EC2) 中執行的 Web 伺服器，還是您私下管理的 Web 伺服器。您也可以將 CloudFront 設定為在 CloudFront 與您自己的 Web 伺服器之間，以及檢視器與 CloudFront 之間需要 HTTPS。

**CloudFront 和您自己的 Web 伺服器之間需要 HTTPS**  
若要在 CloudFront 和您自己的 Web 伺服器之間要求 HTTPS，您可以使用 CloudFront 自訂原始伺服器功能，並為特定原始伺服器設定**原始伺服器通訊協定政策和****原始伺服器網域名稱**設定。在 CloudFront 組態中，您可以指定伺服器的 DNS 名稱，以及您希望 CloudFront 從原始伺服器擷取物件時使用的連接埠和通訊協定。您也應確保您自訂原始伺服器上的 SSL/TLS 憑證符合您已設定的原始伺服器的網域名稱。當您在 外部使用自己的 HTTP Web 伺服器時 AWS，您必須使用由信任的第三方憑證授權單位 (CA) 簽署的憑證，例如 Comodo、DigiCert 或 Symantec。如需有關在 CloudFront 與您自己的 Web 伺服器之間需要 HTTPS 通訊的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[在 CloudFront 與自訂原始伺服器之間需要 HTTPS 通訊](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html)的主題。

**檢視器和 CloudFront 之間需要 HTTPS**  
若要在檢視器和 CloudFront 之間要求 HTTPS，您可以變更 CloudFront 分佈中一或多個快取行為的**檢視器通訊協定政策**。如需在檢視器和 CloudFront 之間使用 HTTPS 的詳細資訊，請參閱《Amazon CloudFront 開發人員指南》中的在[檢視器和 CloudFront 之間通訊需要 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) 的主題。 *Amazon CloudFront * 您也可以使用自己的 SSL 憑證，讓檢視器可以透過 HTTPS 使用您自己的網域名稱連線至 CloudFront 分佈，例如 *https://www.mysite.com*。如需詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[設定替代網域名稱和 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-procedures.html) 主題。

## 選擇 CloudFront 回應的 HTTP 方法
<a name="classic-cloudfront-features-allowed-http-methods"></a>

當您建立 Amazon CloudFront Web 分佈時，您可以選擇您希望 CloudFront 處理並轉送至原始伺服器的 HTTP 方法。您可從下列選項擇一使用：
+ **GET、HEAD** – 您只能使用 CloudFront 從您的原始伺服器取得物件或取得物件標頭。
+ **GET、HEAD、OPONS** – 您只能使用 CloudFront 從原始伺服器取得物件、取得物件標頭，或擷取原始伺服器支援的選項清單。
+ **GET、HEAD、OPONS、PUT、POST、PATCH、DELETE** – 您可以使用 CloudFront 取得、新增、更新和刪除物件，以及取得物件標頭。此外，您可以執行其他 POST 操作，例如從 Web 表單提交資料。

您也可以使用 AWS WAF Classic 字串比對條件，根據 HTTP 方法允許或封鎖請求，如 中所述[使用字串比對條件](classic-web-acl-string-conditions.md)。如果您想要使用 CloudFront 支援的方法組合，例如 `GET`和 `HEAD`，則不需要設定 AWS WAF Classic 來封鎖使用其他方法的請求。如果您想要允許 CloudFront 不支援的方法組合，例如 `GET`、 `HEAD`和 `POST`，您可以設定 CloudFront 回應所有方法，然後使用 AWS WAF Classic 封鎖使用其他方法的請求。

如需選擇 CloudFront 回應方法的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[您在建立或更新 Web 分佈時指定的主題值](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html)中[允許的 HTTP 方法](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesAllowedHTTPMethods)。