操作方法Amazon WAFAmazon CloudFront 功能的经典作品 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

操作方法Amazon WAFAmazon CloudFront 功能的经典作品

注意

这是Amazon WAFClassic文档中)。仅当 2019 年 11 月之前在 Amazon WAF 中创建了 Amazon WAF 资源(例如规则和 Web ACL),但尚未将这些资源迁移到最新版本时,才应使用此版本。要迁移您的资源,请参阅迁移您的Amazon WAFClassic 资源Amazon WAF

对于最新版本的Amazon WAF,请参阅Amazon WAF

在创建 Web ACL 时,您可以指定希望的 CloudFront 分配Amazon WAF经典的检查。Amazon WAFClassic 便开始根据您在 Web ACL 中确定的条件来允许、阻止对于这些分配的 Web 请求或对 Web 请求计数。CloudFront 提供了一些功能来增强Amazon WAFClassic 功能。本章介绍了几种方法,您可以将 CloudFront 配置为 CloudFront 和Amazon WAF经典的工作更好地在一起。

使用Amazon WAFCloudFront 自定义错误页面

何时Amazon WAFClassic 会根据您指定的条件阻止 Web 请求,它会将 HTTP 状态代码 403 (Forbidden) 返回给 CloudFront。接下来,CloudFront 会将该状态代码返回给查看器。然后,查看器显示简要且采用稀疏格式的默认消息,如下所示:

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

如果您希望显示自定义错误消息,可能与您网站其他部分使用相同的格式设置,则您可以将 CloudFront 配置为向查看器返回包含自定义错误消息的对象 (例如,HTML 文件)。

注意

CloudFront 无法区分由您的源返回的 HTTP 状态代码 403 与由Amazon WAF当请求被阻止时,Classic。这意味着,您无法根据 HTTP 状态代码 403 的不同原因返回不同的自定义错误页面。

有关 CloudFront 自定义错误页面的更多信息,请参阅自定义错误响应中的Amazon CloudFront 开发人员指南

使用Amazon WAF带有 CloudFront 地理限制的经典

您可以使用 Amazon CloudFront地理限制功能,也称为地理锁,防止特定地理位置的用户访问您通过 CloudFront Web 分配分发的内容。如何阻止国家/地区的 Web 请求,同时还要根据其他条件阻止请求,您可以将 CloudFront 地理限制与Amazon WAFClassic。CloudFront 会向查看器返回相同的 HTTP 状态代码 — HTTP 403 (Forbi的) — 无论用户是从 CloudFront 地理限制黑名单上的国家/地区访问您的内容,还是请求被Amazon WAFClassic。

注意

您可以在 Web ACL 的 Web 请求示例中看到请求来自的国家/地区的双字母国家/地区代码。有关更多信息,请参阅查看 API Gateway CloudFront 或 Application Load Balancer 转发给的 Web 请求的采样Amazon WAFClassic

有关 CloudFront 地理限制的更多信息,请参阅限制您的内容的地理分配中的Amazon CloudFront 开发人员指南

使用Amazon WAFCloudFront 适用于在您自己的 HTTP 服务器上运行的应用程序

当您使用Amazon WAFCloudFront Classic,您可以保护运行在任意 HTTP webserver 上的应用程序,不论这是在 Amazon Elastic Compute Cloud (Amazon EC2) 中运行的 webserver,还是您私下管理的 webserver。您还可以将 CloudFront 配置为要求在 CloudFront 与您自己的 Web 服务器之间以及在查看器和 CloudFront 之间使用 HTTPS。

要求在 CloudFront 与您自己的 Web 服务器之间使用 HTTPS

要求在 CloudFront 和您自己的 Web 服务器之间使用 HTTPS,您可以使用 CloudFront 自定义源功能,并将源协议策略源域名设置为特定来源。在 CloudFront 配置中,您可以指定服务器的 DNS 名称以及您希望 CloudFront 在从源获取对象时使用的端口和协议。您还应确保自定义源服务器上的 SSL/TLS 证书与您已配置的源域名匹配。当您在 Amazon 之外使用自己的 HTTP webserver 时,您必须使用由信任的第三方证书颁发机构 (CA)(例如,Comodo、DigiCert 或 Symantec)签署的证书。有关需要 HTTPS 进行 CloudFront 和您自己的网络服务器之间的通信的详细信息,请参阅CloudFront 与自定义源之间的通信需要 HTTPS中的Amazon CloudFront 开发人员指南

要求在查看器和 CloudFront 之间使用 HTTPS

要求在查看器和 CloudFront 之间使用 HTTPS,您可以将查看器协议策略对于 CloudFront 分配中的一个或多个缓存行为。有关在查看器和 CloudFront 之间使用 HTTPS 的更多信息,请参阅主题要求在查看器和 CloudFront 之间使用 HTTPS 进行通信中的Amazon CloudFront 开发人员指南。您还可以自带 SSL 证书,以便查看器可以使用您自己的域名通过 HTTPS 连接到 CloudFront 分配,例如https://www.mysite.com。有关更多信息,请参阅主题配置备用域名和 HTTPS中的Amazon CloudFront 开发人员指南

选择 CloudFront 响应的 HTTP 方法

在您创建 Amazon CloudFront Web 分配时,您会选择希望 CloudFront 处理并转发给源的 HTTP 方法。可从以下选项中进行选择:

  • GET、HET— 您只能使用 CloudFront 从源获取对象或获取对象标头。

  • 获取, 头, 选项— 您只能使用 CloudFront 从源获取对象、获取对象标头或检索您的源服务器支持的选项列表。

  • 获取, 头, 选项, 把, 发布, 修补程序, 删除— 您可以使用 CloudFront 获取、添加、更新和删除对象,并获取对象标头。此外,您可以执行其他 POST 操作,例如从 Web 表格提交数据。

您还可以使用Amazon WAF用于允许或阻止基于 HTTP 方法的请求的经典字符串匹配条件,如使用字符串匹配条件。如果您想组合使用 CloudFront 支持的方法,例如GETHEAD,则您无需将无需将Amazon WAFClassic 阻止使用其他方法的请求。如果您希望允许 CloudFront 不支持的方法组合,例如GETHEAD, 和POST,您可以将 CloudFront 配置为响应所有方法,然后使用Amazon WAF经典的阻止使用其他方法的请求。

有关选择 CloudFront 响应的方法的更多信息,请参阅允许的 HTTP 方法在主题中您创建或更新 Web 分配时指定的值中的Amazon CloudFront 开发人员指南