

**引入全新的主机体验 AWS WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

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

# AWS WAF Classic 如何搭配亚马逊 CloudFront 功能
<a name="classic-cloudfront-features"></a>

**警告**  
AWS WAF Classic 正在经历一个有计划的 end-of-life流程。有关您所在地区的里程碑和日期，请参阅您的 AWS Health 控制面板。

**注意**  
这是 **AWS WAF Classic** 文档。只有在 2019 年 11 月 AWS WAF 之前创建了诸如规则和 Web ACLs 之类的 AWS WAF 资源，并且尚未将其迁移到最新版本时，才应使用此版本。要迁移您的网站 ACLs，请参阅[将您的 AWS WAF 经典资源迁移到 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 经典版功能的功能。本章介绍几种您可以配置的方法，CloudFront 以使Classic CloudFront 和 AWS WAF Classic更好地协同工作。

**Topics**
+ [将 AWS WAF 经典版与 CloudFront 自定义错误页面配合使用](#classic-cloudfront-features-custom-error-pages)
+ [将 AWS WAF Classic 与 CloudFront 用于在您自己的 HTTP 服务器上运行的应用程序](#classic-cloudfront-features-your-own-http-server)
+ [选择 CloudFront 响应的 HTTP 方法](#classic-cloudfront-features-allowed-http-methods)

## 将 AWS WAF 经典版与 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 和 Cl AWS WAF assic 在请求被阻止时返回的 HTTP 状态码 403。这意味着，您无法根据 HTTP 状态代码 403 的不同原因返回不同的自定义错误页面。

有关 CloudFront 自定义错误页面的更多信息，请参阅 *Amazon CloudFront 开发者指南*中的[自定义错误响应](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html)。

## 将 AWS WAF Classic 与 CloudFront 用于在您自己的 HTTP 服务器上运行的应用程序
<a name="classic-cloudfront-features-your-own-http-server"></a>

当您将 AWS WAF Classic 与配合使用时 CloudFront，您可以保护在任何 HTTP 网络服务器上运行的应用程序，无论是在亚马逊弹性计算云 (Amazon EC2) 中运行的网络服务器，还是您私下管理的网络服务器。您也可以配置 CloudFront 为要求在 CloudFront和您自己的 Web 服务器之间以及查看者和 CloudFront之间使用 HTTPS。

**需要在 CloudFront 和你自己的网络服务器之间使用 HTTPS**  
要要求在 CloudFront 和您自己的网络服务器之间使用 HTTPS，您可以使用 CloudFront 自定义源功能，并为特定**来源配置源协议策略****和源域名**设置。在您的 CloudFront 配置中，您可以指定服务器的 DNS 名称以及从源中获取对象时 CloudFront 要使用的端口和协议。您还应确保自定义源服务器上的 SSL/TLS 证书与您配置的源域名相匹配。在以外使用自己的 HTTP Web 服务器时 AWS，必须使用由受信任的第三方证书颁发机构 (CA) 签名的证书，例如 Comodo 或 Symante DigiCert c。有关要求在 CloudFront和您自己的网络服务器之间进行通信时需要 HTTPS 的更多信息，请参阅《*亚马逊 CloudFront 开发者指南*》中的 “[需要使用 HTTPS 才能 CloudFront 与您的自定义源进行通](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html)信” 主题。

**需要在查看器和之间使用 HTTPS CloudFront**  
要要求在**查看者和之间使用 HTTPS CloudFront，您可以更改 CloudFront分配中一个或多个缓存行为的查看者协议策略**。有关在观看者和之间使用 HTTPS 的更多信息 CloudFront，请参阅 *Amazon CloudFront 开发者指南 CloudFront*中的 “[观看者之间需要使用 HTTPS 才能进行通信](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)” 主题。例如，您也可以自带 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 网络分配时，您可以选择要 CloudFront 处理的 HTTP 方法并将其转发到您的来源。可从以下选项中进行选择：
+ **GET，HEAD** — 你 CloudFront 只能使用从原点获取对象或获取对象标题。
+ GE@@ **T、H** EAD、OPTIONS — 您 CloudFront 只能使用从您的来源获取对象、获取对象标头或检索源服务器支持的选项列表。
+ **GET、HEAD、OPTIONS、PUT、POST、PAT** CH、DELETE — 您可以使用 CloudFront 获取、添加、更新和删除对象以及获取对象标题。此外，您可以执行其他 POST 操作，例如从 Web 表格提交数据。

您还可以使用 AWS WAF 经典字符串匹配条件来允许或阻止基于 HTTP 方法的请求，如中所述[使用字符串匹配条件](classic-web-acl-string-conditions.md)。如果要使用 CloudFront 支持的方法组合，例如`GET`和`HEAD`，则无需将 Cl AWS WAF assic 配置为阻止使用其他方法的请求。如果要允许组合 CloudFront 不支持的方法，例如`GET``HEAD`、和，则可以配置 CloudFront 为响应所有方法`POST`，然后使用 Cl AWS WAF assic 来阻止使用其他方法的请求。

有关选择 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)”。