

# 所有分配设置参考
<a name="distribution-web-values-specify"></a>

当您创建或更新分配时，可以选择手动编辑 CloudFront 分配设置。以下是您可以编辑的设置。

但是，CloudFront 根据内容源类型为您配置大多数分配设置。有关更多信息，请参阅 [预配置的分配设置参考](template-preconfigured-origin-settings.md)。

有关使用 CloudFront 控制台创建或更新分配的更多信息，请参阅[创建分配](distribution-web-creating-console.md)或[更新分配](HowToUpdateDistribution.md)。

**Topics**
+ [源设置](DownloadDistValuesOrigin.md)
+ [缓存行为设置](DownloadDistValuesCacheBehavior.md)
+ [分配设置](DownloadDistValuesGeneral.md)
+ [自定义错误页面和错误缓存](DownloadDistValuesErrorPages.md)
+ [地理限制](DownloadDistValuesEnableGeoRestriction.md)

# 源设置
<a name="DownloadDistValuesOrigin"></a>

当您使用 CloudFront 控制台创建或更新分配时，您可提供有关一个或多个位置（称为*源*）的信息，它们是您存储原始版 Web 内容的地方。CloudFront 从您的源获取 Web 内容，并通过遍布全球的边缘服务器网络将其提供给查看器。

有关您可以为分配创建的源的当前最大数量或要请求提高限额，请参阅[分配的一般配额](cloudfront-limits.md#limits-web-distributions)。

如果您想删除源，您首先必须编辑或删除与该源有关的缓存行为。

**重要**  
如果您删除源，请确认该源先前提供的文件在另一源中可用，且您的缓存行为将这些文件的请求路由到新的源。

当您创建或更新分配时，您可为每个源指定以下值。

**Topics**
+ [源域](#DownloadDistValuesDomainName)
+ [协议（仅自定义源）](#DownloadDistValuesOriginProtocolPolicy)
+ [源路径](#DownloadDistValuesOriginPath)
+ [名称](#DownloadDistValuesId)
+ [源访问（仅限 Amazon S3 源）](#DownloadDistValuesOAIRestrictBucketAccess)
+ [添加自定义标头](#DownloadDistValuesOriginCustomHeaders)
+ [启用 Origin Shield](#create-update-fields-origin-shield)
+ [连接尝试次数](#origin-connection-attempts)
+ [连接超时](#origin-connection-timeout)
+ [响应超时](#DownloadDistValuesOriginResponseTimeout)
+ [响应完成超时](#response-completion-timeout)
+ [源保持连接超时（仅自定义源和 VPC 源）](#DownloadDistValuesOriginKeepaliveTimeout)
+ [响应和保持连接超时限额](#response-keep-alive-timeout-quota)

## 源域
<a name="DownloadDistValuesDomainName"></a>

源域是资源的 DNS 域名，CloudFront 将在该资源（例如 Amazon S3 存储桶或 HTTP 服务器）中为源获取对象。例如：
+ **Amazon S3 存储桶** – `amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com`
**注意**  
如果您最近创建了 S3 存储桶，则 CloudFront 分配最长可能需要 24 小时才能返回 `HTTP 307 Temporary Redirect` 响应。S3 存储桶名称最长可能需要 24 小时才能传播到所有 AWS 区域。在传播完成后，分配将自动停止发送这些重定向响应；您无需执行任何操作。有关更多信息，请参阅[为什么我会从 Amazon S3 获得 HTTP 307 临时重定向响应？](https://repost.aws/knowledge-center/s3-http-307-response)和[临时请求重定向](https://docs.aws.amazon.com/AmazonS3/latest/dev/Redirects.html#TemporaryRedirection)。
+ **配置为网站的 Amazon S3 存储桶** – `amzn-s3-demo-bucket.s3-website.us-west-2.amazonaws.com`
+ **MediaStore 容器** – `examplemediastore.data.mediastore.us-west-1.amazonaws.com`
+ **MediaPackage 端点** – `examplemediapackage.mediapackage.us-west-1.amazonaws.com`
+ **Amazon EC2 实例** – `ec2-203-0-113-25.compute-1.amazonaws.com`
+ **Elastic Load Balancing 负载均衡器** – `example-load-balancer-1234567890.us-west-2.elb.amazonaws.com`
+ **您自己的 Web 服务器** – `www.example.com`

在**源域**字段中选择域名或键入域名。必须手动输入来自选择加入区域的资源。域名不区分大小写。源域必须具有可公开解析的 DNS 名称，该名称可通过互联网将请求从客户端路由到目标。

如果将 CloudFront 配置为通过 HTTPS 连接到源，则证书中的其中一个域名必须与您为**源域名**指定的域名匹配。如果没有任何域名匹配，CloudFront 会向查看器返回 HTTP 状态代码 502（无效网关）。有关更多信息，请参阅[CloudFront 分配和证书中的域名](cnames-and-https-requirements.md#https-requirements-domain-names-in-cert)和[CloudFront 与自定义源服务器之间的 SSL/TLS 协商失败](http-502-bad-gateway.md#ssl-negotitation-failure)。

**注意**  
如果使用将查看器主机标头转发到源的源请求策略，则源必须使用与查看器主机标头匹配的证书进行响应。有关更多信息，请参阅 [添加 CloudFront 请求标头](adding-cloudfront-headers.md)。

如果您的源是 Amazon S3 存储桶，请注意以下事项：
+ 如果将存储桶配置为网站，请输入存储桶的 Amazon S3 静态网站托管端点；不要从**源域**字段的列表中选择存储桶名称。该静态网站托管端点显示在 Amazon S3 控制台的**属性**页面中的**静态网站托管**下。有关更多信息，请参阅 [使用配置为网站端点的 Amazon S3 存储桶](DownloadDistS3AndCustomOrigins.md#concept_S3Origin_website)。
+ 如果您已为存储桶配置 Amazon S3 Transfer Acceleration，请不要为**源域**指定 `s3-accelerate` 端点。
+ 如果您要从不同的 AWS 账户使用存储桶，而且该存储桶没有配置为网站，请按以下格式输入名称：

  `bucket-name.s3.region.amazonaws.com` 

  如果存储桶位于美国区域，并且您希望 Amazon S3 将请求路由到位于弗吉尼亚州北部的设施，请使用以下格式：

  `bucket-name.s3.us-east-1.amazonaws.com` 
+ 文件必须公开可读，除非您使用 CloudFront 源访问控制确保 Amazon S3 中内容的安全。有关访问控制的更多信息，请参阅[限制对 Amazon S3 源的访问](private-content-restricting-access-to-s3.md)。

**重要**  
如果源是 Amazon S3 存储桶，存储桶名称必须符合 DNS 命名要求。有关更多信息，请转至《Amazon Simple Storage Service 用户指南》**中的[桶限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)。

当您更改源的**源域**值时，CloudFront 立即开始复制对 CloudFront 边缘站点的更改。在特定边缘站点中的分配配置得到更新之前，CloudFront 会继续将请求转发到先前的源。该边缘站点中的分配配置一经更新，CloudFront 就开始将请求转发到新的源。

更改源并不要求 CloudFront 用新源中的对象重新填充边缘缓存。只要应用程序中的查看器请求未经更改，CloudFront 就会继续提供边缘缓存中已有的对象，直至每个对象的 TTL 过期或直至很少被请求的对象被逐出。

## 协议（仅自定义源）
<a name="DownloadDistValuesOriginProtocolPolicy"></a>

**注意**  
这仅适用于自定义源。

您希望 CloudFront 在从源获取对象时要使用的协议策略。

选择以下任一值：
+ **仅 HTTP**：CloudFront 仅使用 HTTP 访问源。
**重要**  
当源是 Amazon S3 静态网站托管端点时，**仅 HTTP** 是默认设置，因为 Amazon S3 不支持对静态网站托管端点使用 HTTPS 连接。CloudFront 控制台不支持更改 Amazon S3 静态网站托管终端的此设置。
+ **仅 HTTPS**：CloudFront 仅使用 HTTPS 访问源。
+ **匹配查看器**：CloudFront 使用 HTTP 或 HTTPS 与源进行通信，具体取决于查看器请求的协议。请注意，CloudFront 仅缓存对象一次，即使查看器使用 HTTP 和 HTTPS 协议发出请求也是如此。
**重要**  
对于 CloudFront 转发到该源的 HTTPS 查看器请求，源服务器上的 SSL/TLS 证书中的域名之一必须与为**源域**指定的域名匹配。否则，CloudFront 将使用 HTTP 状态代码 502（无效网关）响应查看器请求，而不是返回请求的对象。有关更多信息，请参阅 [在 CloudFront 中使用 SSL/TLS 证书的要求](cnames-and-https-requirements.md)。

**Topics**
+ [HTTP 端口](#DownloadDistValuesHTTPPort)
+ [HTTPS 端口](#DownloadDistValuesHTTPSPort)
+ [最低限度源 SSL 协议](#DownloadDistValuesOriginSSLProtocols)

### HTTP 端口
<a name="DownloadDistValuesHTTPPort"></a>

**注意**  
这仅适用于自定义源。

（可选）您可以指定自定义源进行侦听的 HTTP 端口。有效值包括端口 80、443 和 1024 至 65535。默认值为端口 80。

**重要**  
当源是 Amazon S3 静态网站托管端点时，端口 80 是默认设置，因为 Amazon S3 仅对静态网站托管端点支持端口 80。CloudFront 控制台不支持更改 Amazon S3 静态网站托管终端的此设置。

### HTTPS 端口
<a name="DownloadDistValuesHTTPSPort"></a>

**注意**  
这仅适用于自定义源。

（可选）您可以指定自定义源进行侦听的 HTTPS 端口。有效值包括端口 80、443 和 1024 至 65535。默认值为端口 443。当**协议**设置为**仅 HTTP** 时，不能为 **HTTPS 端口**指定值。

### 最低限度源 SSL 协议
<a name="DownloadDistValuesOriginSSLProtocols"></a>

**注意**  
这仅适用于自定义源。

选择 CloudFront 在建立与您的源的 HTTPS 连接时可以使用的最低限度 TLS/SSL 协议。降低 TLS 协议级别会降低安全性，因此建议您选择您的源支持的最新 TLS 协议。当**协议**设置为**仅 HTTP** 时，不能为**最低限度源 SSL 协议**指定值。

如果您使用 CloudFront API 设置 CloudFront 要使用的 TLS/SSL 协议，则无法设置最低限度协议。而是要指定 CloudFront 可以用于您的源的所有 TLS/SSL 协议。有关更多信息，请参阅《Amazon CloudFront API 参考》**中的 [OriginSslProtocols](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_OriginSslProtocols.html)。

## 源路径
<a name="DownloadDistValuesOriginPath"></a>

如果您希望 CloudFront 从源的目录中请求内容，请以斜杠 (/) 开头输入目录路径。CloudFront 会将目录路径附加到**源域**的值之后，例如 **cf-origin.example.com/production/images**。请不要在路径的末尾添加斜杠 (/)。

例如，假设您已为分配指定以下值：
+ **源域** – 名为 **amzn-s3-demo-bucket** 的 Amazon S3 存储桶
+ **源路径** – **/production**
+ **备用域名 (CNAME)**–**example.com** 

当用户在浏览器中输入 `example.com/index.html` 时，CloudFront 会将请求发送到 `amzn-s3-demo-bucket/production/index.html` 的 Amazon S3。

当用户在浏览器中输入 `example.com/acme/index.html` 时，CloudFront 会将请求发送到 `amzn-s3-demo-bucket/production/acme/index.html` 的 Amazon S3。

## 名称
<a name="DownloadDistValuesId"></a>

名称是唯一标识此分配中的这个源的字符串。如果您创建默认缓存行为之外的缓存行为，可以使用在此处指定的名称，以标识您希望 CloudFront 在请求与该缓存行为的路径模式匹配时将请求路由到的源。

## 源访问（仅限 Amazon S3 源）
<a name="DownloadDistValuesOAIRestrictBucketAccess"></a>

**注意**  
这仅适用于 Amazon S3 存储桶源（*不*使用 S3 静态网站端点的那些源）。

如果您想将对 Amazon S3 存储桶源的访问限制为仅限特定的 CloudFront 分配，请选择**来源访问控制设置(推荐)**。

如果 Amazon S3 存储桶源可公开访问，请选择**公有**。

有关更多信息，请参阅 [限制对 Amazon S3 源的访问](private-content-restricting-access-to-s3.md)。

有关如何要求用户仅使用 CloudFront URL 访问自定义源上的对象的信息，请参阅[在自定义源上限制对文件的访问](private-content-overview.md#forward-custom-headers-restrict-access)。

## 添加自定义标头
<a name="DownloadDistValuesOriginCustomHeaders"></a>

如果您希望 CloudFront 在将请求发送到源时添加自定义标头，请指定标头名称及其值。有关更多信息，请参阅 [向源请求添加自定义标头](add-origin-custom-headers.md)。

有关可添加的自定义标头的当前最大数量、自定义标头名称和值的最大长度，以及所有标头名称和值的最大总长度，请参阅[配额](cloudfront-limits.md)。

## 启用 Origin Shield
<a name="create-update-fields-origin-shield"></a>

选择**是**以启用 CloudFront Origin Shield。有关 Origin Shield 的更多信息，请参阅[使用 Amazon CloudFront Origin Shield](origin-shield.md)。

## 连接尝试次数
<a name="origin-connection-attempts"></a>

您可以设置 CloudFront 尝试连接到源的次数。您可以指定 1、2 或 3 作为尝试次数。默认次数（如果您没有另行指定）为 3。

将此设置与**连接超时**一起使用，可指定 CloudFront 在尝试连接到辅助源或向查看器返回错误响应之前等待多长时间。默认情况下，CloudFront 在尝试连接到辅助源或返回错误响应之前等待长达 30 秒（3 次尝试，每次 10 秒）。您可以通过指定更少的尝试次数、更短的连接超时或两者来减少此时间。

如果指定次数的连接尝试失败，CloudFront 执行以下操作之一：
+ 如果源是源组的一部分，CloudFront 尝试连接到辅助源。如果指定次数的连接尝试失败，则 CloudFront 向查看器返回错误响应。
+ 如果源不是源组的一部分，则 CloudFront 向查看器返回错误响应。

对于自定义源（包括配置了静态网站托管的 Amazon S3 存储桶），此设置还指定 CloudFront 尝试从源获取响应的次数。有关更多信息，请参阅 [响应超时](#DownloadDistValuesOriginResponseTimeout)。

## 连接超时
<a name="origin-connection-timeout"></a>

连接超时是 CloudFront 在尝试建立与源的连接时等待的秒数。您可以指定 1 到 10 之间（含）的秒数。默认超时（如果您没有另行指定）为 10 秒。

将此设置与**连接尝试次数**一起使用，可指定 CloudFront 在尝试连接到辅助源或向查看器返回错误响应之前等待多长时间。默认情况下，CloudFront 在尝试连接到辅助源或返回错误响应之前等待长达 30 秒（3 次尝试，每次 10 秒）。您可以通过指定更少的尝试次数、更短的连接超时或两者来减少此时间。

如果 CloudFront 未在指定的秒数内建立到源的连接，CloudFront 执行以下操作之一：
+ 如果指定的**连接尝试次数**超过 1，CloudFront 将再次尝试建立连接。CloudFront 最多尝试 3 次，具体取决**连接尝试次数**的值。
+ 如果所有连接尝试都失败，并且源是源组的一部分，则 CloudFront 尝试连接到辅助源。如果指定次数的连接尝试失败，则 CloudFront 向查看器返回错误响应。
+ 如果所有连接尝试都失败，且源不是源组的一部分，则 CloudFront 向查看器返回错误响应。

## 响应超时
<a name="DownloadDistValuesOriginResponseTimeout"></a>

来源响应超时（也称为*来源读取超时* 或*来源请求超时*）适用于以下两个值：
+ CloudFront 在将请求转发到源后等待响应的时间长度（以秒为单位）。
+ CloudFront 从收到来自源的一个响应数据包到收到下一个数据包之间等待的时间长度（以秒为单位）。

**提示**  
如果您由于查看器遇到了 HTTP 504 状态代码错误而希望增加超时值，请考虑探索其他方法来在更改超时值之前消除这些错误。请参阅 [HTTP 504 状态代码 (Gateway Timeout)](http-504-gateway-timeout.md) 中的故障排除建议。

CloudFront 行为取决于查看器请求中的 HTTP 方法：
+ `GET` 和 `HEAD` 请求 – 如果源在响应超时的持续时间内没有响应或停止响应，则 CloudFront 中断连接。CloudFront 根据 [连接尝试次数](#origin-connection-attempts) 的值再次尝试进行连接。
+ `DELETE`、`OPTIONS`、`PATCH`、`PUT` 和 `POST` 请求 – 如果源在读取超时期间未响应，CloudFront 将中断连接并且不会再次尝试联系源。如有必要，客户端可以重新提交请求。

## 响应完成超时
<a name="response-completion-timeout"></a>

**注意**  
响应完成超时不支持[持续部署](continuous-deployment.md)功能。

从 CloudFront 向源发出的请求可以保持打开状态并等待响应的时间（以秒为单位）。如果此时未收到来自源的完整响应，CloudFront 将终止连接。

与**响应超时**（即*各个*响应数据包的等待时间）不同，**响应完成超时**是 CloudFront 等待响应完成的*最大*允许时间量。您可以使用此设置来确保 CloudFront 不会无限期等待缓慢或无响应的源，即使其它超时设置支持等待更长的时间也是如此。

此最大超时包括您为其它超时设置指定的时间以及每次重试的**连接尝试**次数。您可以同时使用这些设置来指定 CloudFront 等待完整请求的时间以及何时结束请求，而无论请求是否完成。

例如，如果您设置了以下设置：
+ **连接尝试次数**为 3
+ **连接超时**为 10 秒
+ **响应超时**为 30 秒
+ **响应完成超时**为 60 秒

这意味着 CloudFront 将尝试连接到源（总尝试次数最多为 3 次），每次连接尝试超时为 10 秒。连接后，CloudFront 将等待 30 秒来让源响应请求，直到它收到响应的最后一个数据包。

无论连接尝试次数或响应超时如何，如果来自源的完整响应的完成时间超过 60 秒，CloudFront 都将终止连接。然后，如果您指定了 [HTTP 504 状态代码 (Gateway Timeout)](http-504-gateway-timeout.md)错误响应或自定义错误响应，CloudFront 将向查看器返回此类错误响应。

**备注**  
如果您为响应完成超时设置了一个值，则该值必须等于或大于[响应超时值（源读取超时）](#DownloadDistValuesOriginResponseTimeout)。
如果您没有为响应完成超时设置值，CloudFront 不会强制执行最大值。

## 源保持连接超时（仅自定义源和 VPC 源）
<a name="DownloadDistValuesOriginKeepaliveTimeout"></a>

保持连接超时是 CloudFront 在获取最后一个响应数据包后，尝试保持与自定义源的连接的时间长度（以秒为单位）。保持持久性连接可节省重新建立 TCP 连接和执行后续请求的另一个 TLS 握手所需的时间。增加保持连接超时有助于改善分配的每连接请求指标。

**注意**  
为了让**源保持连接超时**值生效，源必须配置为允许持久性连接。

## 响应和保持连接超时限额
<a name="response-keep-alive-timeout-quota"></a>
+ [响应超时](#DownloadDistValuesOriginResponseTimeout)的默认值为 30 秒。
+ [保持连接超时](#DownloadDistValuesOriginKeepaliveTimeout)的默认值为 5 秒。

如果您为您的 AWS 账户请求延长超时，请更新分配源，使其具有您所需的响应超时和保持连接超时值。为账户提升限额并不会自动更新您的源。例如，如果您使用 Lambda@Edge 函数将保持连接超时设置为 90 秒，则您的源的保持连接超时值必须为 90 秒或更长时间。否则，您的 Lambda@Edge 函数可能会无法执行。

有关分配配额的更多信息，包括如何请求提高配额，请参阅[分配的一般配额](cloudfront-limits.md#limits-web-distributions)。

# 缓存行为设置
<a name="DownloadDistValuesCacheBehavior"></a>

通过设置缓存行为，您可以为您网站上文件的特定 URL 路径模式配置各种 CloudFront 功能。例如，一个缓存行为可能适用于您用作 CloudFront 源服务器的 Web 服务器上 `.jpg` 目录中所有的 `images` 文件。您可为每个缓存行为配置的功能包括：
+ 路径模式
+ 如果您已经为 CloudFront 分配配置了多个源，则为您希望 CloudFront 将您的请求转发到的源
+ 是否将查询字符串转发到源
+ 访问指定文件是否需要签名的 URL
+ 是否要求用户使用 HTTPS 访问这些文件
+ 这些文件保留在 CloudFront 缓存中的最短时间，不管您的源添加到文件中的任何 `Cache-Control` 标头的值

当您创建新分配时，您为默认缓存行为指定设置，这将自动把所有请求转发到您创建分配时指定的源中。在创建分配后，您可创建其他缓存行为，该行为定义 CloudFront 在其接受与路径模式相匹配的对象请求时如何响应，例如 `*.jpg`。如果您创建其他缓存行为，默认缓存行为始终是最后一个被处理的。其他缓存行为以他们在 CloudFront 控制台中所列的顺序进行处理，或者，如果您使用 CloudFront API，以他们在分配 `DistributionConfig` 元素中所列的顺序进行处理。有关更多信息，请参阅 [路径模式](#DownloadDistValuesPathPattern)。

当您创建缓存行为是，可指定您希望 CloudFront 从中获取对象的一个源。因此，如果您希望 CloudFront 分配所有源的对象，必须至少具有与您所拥有的源一样多的缓存行为（包括默认缓存行为）。例如，如果您有两个源但只有一个默认缓存行为，则默认缓存行为将导致 CloudFront 从其中一个源获取对象，但永远不会使用另一个源。

有关您可以添加到分配的当前最大缓存行为数，或要请求提高配额（以前称为限制），请参阅[分配的一般配额](cloudfront-limits.md#limits-web-distributions)。

**Topics**
+ [路径模式](#DownloadDistValuesPathPattern)
+ [源或源组](#DownloadDistValuesTargetOriginId)
+ [查看器协议策略](#DownloadDistValuesViewerProtocolPolicy)
+ [允许的 HTTP 方法](#DownloadDistValuesAllowedHTTPMethods)
+ [字段级加密 Config](#DownloadDistValuesFieldLevelEncryption)
+ [缓存的 HTTP 方法](#DownloadDistValuesCachedHTTPMethods)
+ [允许通过 HTTP/2 发出 gRPC 请求](#enable-grpc-distribution)
+ [基于选择的请求标头进行缓存](#DownloadDistValuesForwardHeaders)
+ [允许列表标头](#DownloadDistValuesAllowlistHeaders)
+ [对象缓存](#DownloadDistValuesObjectCaching)
+ [最小 TTL](#DownloadDistValuesMinTTL)
+ [最大 TTL](#DownloadDistValuesMaxTTL)
+ [默认 TTL](#DownloadDistValuesDefaultTTL)
+ [转发 Cookie](#DownloadDistValuesForwardCookies)
+ [允许列表 Cookie](#DownloadDistValuesAllowlistCookies)
+ [查询字符串转发和缓存](#DownloadDistValuesQueryString)
+ [查询字符串允许列表](#DownloadDistValuesQueryStringAllowlist)
+ [Smooth Streaming](#DownloadDistValuesSmoothStreaming)
+ [限制查看器访问（使用签名 URL 或签名 Cookie）](#DownloadDistValuesRestrictViewerAccess)
+ [可信签署人](#DownloadDistValuesTrustedSigners)
+ [AWS 账户 数字](#DownloadDistValuesAWSAccountNumbers)
+ [自动压缩对象](#DownloadDistValuesCompressObjectsAutomatically)
+ [CloudFront 事件](#DownloadDistValuesEventType)
+ [Lambda 函数 ARN](#DownloadDistValuesLambdaFunctionARN)
+ [包含正文](#include-body)

## 路径模式
<a name="DownloadDistValuesPathPattern"></a>

路径模式（例如，`images/*.jpg`）指定您希望该缓存行为所适用的请求。CloudFront 收到查看器请求时，会按照缓存行为在分配中列出的顺序，将请求路径与路径模式进行比较。第一个匹配者决定了哪个缓存行为适用于该请求。例如，假设您具有以下三个路径模式的三个缓存行为，顺序如下：
+ `images/*.jpg`
+ `images/*`
+ `*.gif`

**注意**  
可以选择在路径模式的开头包含斜杠 (/)，例如 `/images/*.jpg`。无论开头是否有 /，CloudFront 行为都相同。如果您未在路径的开头指定 /，则会自动隐含此字符；无论开头是否有 /，CloudFront 都会以相同方式处理该路径。例如，CloudFront 将 `/*product.jpg` 视为与 `*product.jpg` 相同

文件 `images/sample.gif` 的请求不符合第一个路径模式，因此，相关的缓存行为不适用于该请求。文件符合第二路径模式，因此，与第二个路径模式有关的缓存行为适用，即使该请求与第三个路径模式也匹配。

**注意**  
在创建新的分配时，默认缓存行为的**路径模式**的值将设置为 **\$1**（所有文件）且无法更改。此值导致 CloudFront 将您对象的所有请求转发到您在 [源域](DownloadDistValuesOrigin.md#DownloadDistValuesDomainName) 字段中指定的源。如果对象的请求与任何其他缓存行为的路径模式都不匹配，CloudFront 将应用您在默认缓存行为中指定的行为。

**重要**  
请谨慎定义路径模式及其顺序，否则您可能会向用户提供非预期的内容访问权限。例如，假设请求匹配两个缓存行为的路径模式。第一个缓存行为不要求签名 URL，而第二个缓存行为要求签名 URL。用户无需使用签名 URL 即可访问对象，因为 CloudFront 处理与第一个匹配有关的缓存行为。

如果您正在使用 MediaPackage 通道，则必须为您为源的端点类型定义的缓存行为包含特定的路径模式。例如，对于 DASH 端点，为**路径模式**键入 `*.mpd`。有关更多信息和具体说明，请参阅[提供使用 AWS Elemental MediaPackage 格式化的实时视频](live-streaming.md#live-streaming-with-mediapackage)。

您指定的路径适用于指定目录以及该指定目录下所有子目录中所有文件的请求。在评估路径模式时，CloudFront 不会考虑查询字符串或 Cookie。例如，如果 `images` 目录包含 `product1` 和 `product2` 子目录，此路径模式 `images/*.jpg` 适用于 `images`、`images/product1` 和 `images/product2` 目录中任何 .jpg 文件的请求。如果您希望将不同的缓存行为应用于 `images/product1` 目录中的文件而非 `images` 和 `images/product2` 目录中文件，为 `images/product1` 创建单独的缓存行为，并将该缓存行为移到 `images` 目录中缓存行为上方 (前面) 的位置。

您可在路径模式中使用以下通配符：
+ `*` 匹配 0 或多个字符。
+ `?` 精准匹配 1 个字符。

以下示例展示了通配符如何工作：


****  

| 路径模式 | 与路径模式匹配的文件 | 
| --- | --- | 
|  `*.jpg`  |  所有 .jpg 文件。  | 
|  `images/*.jpg`  |  `images` 目录及该 `images` 目录下子目录中的所有 .jpg 文件。  | 
|  `a*.jpg`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/DownloadDistValuesCacheBehavior.html)  | 
|  `a??.jpg`  |  文件名以 `a` 开头且随后紧跟两个其他字符的所有 .jpg 文件，例如，`ant.jpg` 和 `abe.jpg`。  | 
|  `*.doc*`  |  文件扩展名以 `.doc` 开头的所有文件，例如，`.doc`、`.docx` 和 `.docm` 文件。在这种情况下，您不能使用路径模式 `*.doc?`，因为该路径模式不适用于 `.doc` 文件的请求；`?` 通配符精确替换一个字符。  | 

路径模式的长度上限是 255 个字符。该值可包含以下任何字符：
+ A-Z, a-z

  路径模式区分大小写，因此，路径模式 `*.jpg` 不适用于文件 `LOGO.JPG`。
+ 0-9
+ \$1 - . \$1 \$1 / \$1 " ' @ : \$1
+ &，作为 `&amp;` 传递和返回

### 路径规范化
<a name="path-normalization"></a>

CloudFront 对 URI 路径进行了与 [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986#section-6) 一致的规范化，然后将该路径与正确的缓存行为进行匹配。缓存行为匹配后，CloudFront 会将原始 URI 路径发送到源。如果它们不匹配，则请求会改为与您的默认缓存行为进行匹配。

会对某些字符进行规范化并从路径中删除它们，例如多个斜杠（`//`）或句点（`..`）。这可能会更改 CloudFront 用于匹配预期缓存行为的 URL。

**Example 示例**  
您可以为缓存行为指定 `/a/b*` 和 `/a*` 路径。  
+ 发送 `/a/b?c=1` 路径的查看器将与 `/a/b*` 缓存行为进行匹配。
+ 发送 `/a/b/..?c=1` 路径的查看器将与 `/a*` 缓存行为进行匹配。

要解决规范化路径的问题，您可以更新请求路径或缓存行为的路径模式。

## 源或源组
<a name="DownloadDistValuesTargetOriginId"></a>

此设置仅在您为现有分配创建或更新缓存行为时才适用。

输入现有源或源组的值。该值标识当请求（如 https://example.com/logo.jpg）与缓存行为（如 \$1.jpg）或默认缓存行为 (\$1) 的路径模式匹配时，您希望 CloudFront 将请求路由至的源或源组。

## 查看器协议策略
<a name="DownloadDistValuesViewerProtocolPolicy"></a>

选择您希望查看器用来访问 CloudFront 边缘站点中的内容的协议策略：
+ **HTTP 和 HTTPS**：查看器可使用两种协议。
+ **将 HTTP 重定向到 HTTPS**：查看器可使用两种协议，但 HTTP 请求将自动重定向到 HTTP 请求。
+ **仅 HTTPS**：如果查看器使用了 HTTPS，则只能访问您的内容。

有关更多信息，请参阅 [要求在查看器和 CloudFront 之间使用 HTTPS 进行通信](using-https-viewers-to-cloudfront.md)。

## 允许的 HTTP 方法
<a name="DownloadDistValuesAllowedHTTPMethods"></a>

指定您希望 CloudFront 处理并转发到源的 HTTP 方法：
+ **GET、HEAD：**您只能使用 CloudFront 获取您源中的对象或获取对象标头。
+ **GET、HEAD、OPTIONS：**您只能使用 CloudFront 从源获取对象、获取对象标头或检索您的源服务器支持的选项列表。
+ **GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE：**您可以使用 CloudFront 获取、添加、更新和删除对象以及获取对象标头。此外，您可以执行其他 POST 操作，例如从 Web 表格提交数据。
**注意**  
如果您在工作负载中使用 gRPC，则必须选择 **GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE**。gRPC 工作负载需要 `POST` 方法。有关更多信息，请参阅 [将 gRPC 与 CloudFront 分配结合使用](distribution-using-grpc.md)。  
CloudFront 将缓存对 `GET` 和 `HEAD` 请求以及（可选）`OPTIONS` 请求的响应。对 `OPTIONS` 请求的响应与对 `GET` 和 `HEAD` 请求的响应单独缓存（`OPTIONS` 方法包含在 `OPTIONS` 请求的[缓存键](understanding-the-cache-key.md)中）。CloudFront 不缓存对使用其他方法的请求的响应。

**重要**  
如果您选择 **GET, HEAD, OPTIONS** 或 **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE**，则可能需要限制对 Amazon S3 存储桶或自定义源的访问，以阻止用户执行您不希望他们执行的操作。以下示例说明了如何限制访问：  
**如果将 Amazon S3 作为您的分配的源**：创建 CloudFront 源访问控制，以限制对您的 Amazon S3 内容的访问，并为源访问控制授予权限。例如，如果您*只是* 因为想要使用 `PUT` 而将 CloudFront 配置为接受并转发这些方法，则仍必须配置 Amazon S3 存储桶策略以适当处理 `DELETE` 请求。有关更多信息，请参阅 [限制对 Amazon S3 源的访问](private-content-restricting-access-to-s3.md)。
**如果您使用自定义源：**配置源服务器以处理所有方法。例如，您将 CloudFront 配置为接受并转发这些方法*只是*因为您想要使用 `POST`，则仍必须配置您的源服务器以适当处理 `DELETE` 请求。

## 字段级加密 Config
<a name="DownloadDistValuesFieldLevelEncryption"></a>

如果您要对特定数据字段强制实施字段级加密，请在下拉列表中选择一个字段级加密配置。

有关更多信息，请参阅 [使用字段级加密帮助保护敏感数据](field-level-encryption.md)。

## 缓存的 HTTP 方法
<a name="DownloadDistValuesCachedHTTPMethods"></a>

指定您是否希望 CloudFront 在查看器提交 `OPTIONS` 请求时缓存来自源的响应。CloudFront 始终缓存对 `GET` 和 `HEAD` 请求的响应。

## 允许通过 HTTP/2 发出 gRPC 请求
<a name="enable-grpc-distribution"></a>

指定是否希望您的分配允许 gRPC 请求。要启用 gRPC，请选择以下设置：
+ 对于**[允许的 HTTP 方法](#DownloadDistValuesAllowedHTTPMethods)**，请选择 **GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE** 方法。gRPC 需要 `POST` 方法。
+ 选择 `POST` 方法后，选中出现的 gRPC 复选框。
+ 对于 **[支持的 HTTP 版本](DownloadDistValuesGeneral.md#DownloadDistValuesSupportedHTTPVersions)**，请选择 **HTTP/2**。

有关更多信息，请参阅 [将 gRPC 与 CloudFront 分配结合使用](distribution-using-grpc.md)。

## 基于选择的请求标头进行缓存
<a name="DownloadDistValuesForwardHeaders"></a>

指定您是否要 CloudFront 基于指定标头的值缓存对象：
+ **无(改进缓存)** – CloudFront 不根据标头值缓存您的对象。
+ **允许列表** – CloudFront 仅根据指定标头的值缓存您的对象。使用**允许列表标头**选择您希望 CloudFront 进行缓存时所基于的标头。
+ **所有** – CloudFront 不缓存与该缓存行为关联的对象。相反，CloudFront 会将每个请求发送到源。（不建议用于 Amazon S3 源。）

无论您选择哪个选项，CloudFront 都会将特定标头转发到您的源并根据您转发的标头执行特定操作。有关 CloudFront 如何处理标头转发的更多信息，请参阅[HTTP 请求标头和 CloudFront 行为（自定义源和 Amazon S3 源）](RequestAndResponseBehaviorCustomOrigin.md#request-custom-headers-behavior)。

有关如何使用请求标头在 CloudFront 中配置缓存的更多信息，请参阅[根据请求标头缓存内容](header-caching.md)。

## 允许列表标头
<a name="DownloadDistValuesAllowlistHeaders"></a>

此设置仅在您为**基于选择的请求标头进行缓存**选择**允许列表**时才适用。

指定您希望 CloudFront 在缓存对象时考虑的标头。从可用标头列表中选择标头，然后选择**添加**。要转发自定义标头，请在字段中输入标头的名称，然后选择**添加自定义标头**。

有关您可以为每个缓存行为列入允许列表的当前最大标头数，或者要请求提高配额（以前称为限制），请参阅[标头的配额](cloudfront-limits.md#limits-custom-headers)。

## 对象缓存
<a name="DownloadDistValuesObjectCaching"></a>

如果源服务器将 `Cache-Control` 标头添加到对象以控制在 CloudFront 缓存中保留对象的时间长度，并且您不希望更改 `Cache-Control` 值，请选择**使用源缓存标头**。

要指定在 CloudFront 缓存中保留对象的最短时间和最长时间（不管 `Cache-Control` 标头如何）以及在缺少 `Cache-Control` 标头时在 CloudFront 缓存中保留对象的默认时间，请选择**自定义**。然后，在**最小 TTL**、**默认 TTL** 和**最大 TTL** 字段中指定值。

有关更多信息，请参阅 [管理内容保留在缓存中的时间长度（过期）](Expiration.md)。

## 最小 TTL
<a name="DownloadDistValuesMinTTL"></a>

指定您希望对象在 CloudFront 缓存中保留的最短时间（以秒为单位），在此时间之后，CloudFront 会向源发送另一个请求以确定此对象是否已更新。

**警告**  
如果最小 TTL 大于 0，CloudFront 将至少在缓存策略的最小 TTL 中指定的持续时间内缓存内容，即使源标头中存在 `Cache-Control: no-cache`、`no-store` 或 `private` 指令也是如此。

有关更多信息，请参阅 [管理内容保留在缓存中的时间长度（过期）](Expiration.md)。

## 最大 TTL
<a name="DownloadDistValuesMaxTTL"></a>

指定您希望在 CloudFront 查询您的源以了解对象是否已更新之前，对象保留在 CloudFront 缓存中的最大时长（以秒为单位）。您为**最大 TTL** 指定的值仅在源向对象添加 HTTP 标头 (例如 `Cache-Control max-age`、`Cache-Control s-maxage` 或 `Expires`) 时适用。有关更多信息，请参阅 [管理内容保留在缓存中的时间长度（过期）](Expiration.md)。

要指定 **Maximum TTL** 的值，您必须为 **Object Caching** 设置选择 **Customize** 选项。

**最大 TTL** 的默认值为 31536000 秒（一年）。如果您将**最小 TTL** 或**默认 TTL** 的值更改为一个大于 31536000 秒的值，则**最大 TTL** 的默认值将变为**默认 TTL** 的值。

## 默认 TTL
<a name="DownloadDistValuesDefaultTTL"></a>

指定您希望对象在 CloudFront 缓存中保留的默认时间（以秒为单位），在此时间之后，CloudFront 会向您的源转发另一个请求以确定此对象是否已更新。您为**默认 TTL** 指定的值仅在源*不*向对象添加 HTTP 标头（例如 `Cache-Control max-age`、`Cache-Control s-maxage` 或 `Expires`）时才适用。有关更多信息，请参阅 [管理内容保留在缓存中的时间长度（过期）](Expiration.md)。

要指定**默认 TTL** 的值，您必须为**对象缓存**设置选择**自定义**选项。

**默认 TTL** 的默认值为 86400 秒（一天）。如果您将**最小 TTL** 的值更改为一个大于 86400 秒的值，则**默认 TTL** 的默认值将更改为**最小 TTL** 的值。

## 转发 Cookie
<a name="DownloadDistValuesForwardCookies"></a>

**注意**  
对于 Amazon S3 源，此选项仅适用于配置为网站端点的存储桶。

指定是否希望 CloudFront 转发 Cookie 到您的源服务器，以及指定转发哪些 Cookie。如果您选择仅转发选定的 Cookie（Cookie 允许列表），请在**允许列表 Cookie** 字段中输入 Cookie 名称。如果选择**全部**，不管您的应用程序使用多少，CloudFront 都会转发所有 Cookie。

Amazon S3 不处理 Cookie，且将 Cookie 转发到来源会降低缓存能力。对于将请求转发到 Amazon S3 源的缓存行为，请对**转发 Cookie** 选择**无**。

有关转发 cookie 到源的更多信息，请转至 [根据 Cookie 缓存内容](Cookies.md)。

## 允许列表 Cookie
<a name="DownloadDistValuesAllowlistCookies"></a>

**注意**  
对于 Amazon S3 源，此选项仅适用于配置为网站端点的存储桶。

如果您在**转发 Cookie** 列表中选择**允许列表**，请在**允许列表 Cookie** 字段中输入您希望 CloudFront 为该缓存行为转发到原始服务器的 Cookie 的名称。在新一行中输入每个 Cookie 的名称。

可以使用以下通配符来指定 Cookie 名称：
+ **\$1** 匹配 Cookie 名称中的 0 个或多个字符
+ **?** 与 Cookie 名称中的 1 个字符完全匹配

例如，假设对象的查看器请求包含一个带以下名称的 Cookie：

`userid_member-number`

其中，您的每个用户均具有一个唯一的 *member-number* 值。您希望 CloudFront 为每个成员缓存对象的单独版本。您可以通过将所有 Cookie 转发到源来完成该操作，但查看器请求包含一些您希望 CloudFront 不要缓存的 Cookie。或者，您也可以指定以下值以作为 Cookie 名称，这会导致 CloudFront 将所有以 `userid_` 开头的 Cookie 转发到源：

`userid_*`

有关您可以为每个缓存行为列入允许列表的当前最大 cookie 名称数，或者要请求提高配额（以前称为限制），请参阅[Cookies 的配额（旧缓存设置）](cloudfront-limits.md#limits-allowlisted-cookies)。

## 查询字符串转发和缓存
<a name="DownloadDistValuesQueryString"></a>

CloudFront 可根据查询字符串参数的值来缓存不同版本的内容。请选择以下任一选项：

**无(改进缓存)**  
如果无论查询字符串参数的值如何，源都返回相同版本的对象，请选择该选项。这增加了 CloudFront 可从缓存满足请求的可能性，这提高了性能并降低了源的负载。

**全部转发，基于允许列表进行缓存**  
如果源服务器根据一个或多个查询字符串参数返回不同版本的对象，请选择该选项。然后，在 [查询字符串允许列表](#DownloadDistValuesQueryStringAllowlist) 字段中指定您希望 CloudFront 作为缓存基础的参数。

**全部转发，基于所有进行缓存**  
如果源服务器为所有查询字符串参数返回不同版本的对象，请选择该选项。

有关基于查询字符串参数进行缓存的更多信息（包括如何改进性能），请参阅[根据查询字符串参数缓存内容](QueryStringParameters.md)。

## 查询字符串允许列表
<a name="DownloadDistValuesQueryStringAllowlist"></a>

此设置仅在您为 [查询字符串转发和缓存](#DownloadDistValuesQueryString) 选择**全部转发，基于允许列表进行缓存**时才适用。您可以指定您希望 CloudFront 用作缓存基础的查询字符串参数。

## Smooth Streaming
<a name="DownloadDistValuesSmoothStreaming"></a>

如果您希望以 Microsoft Smooth Streaming 格式分发媒体文件并且您没有 IIS 服务器，则选择**是**。

如果您有 Microsoft IIS 服务器并且要将其用作以 Microsoft Smooth Streaming 格式分发媒体文件的源，或者您不打算分发 Smooth Streaming 媒体文件，则选择**否**。

**注意**  
如果您指定**是**，您仍可以使用该缓存行为分配其他内容，只要该内容与**路径模式**值匹配。

有关更多信息，请参阅 [为 Microsoft Smooth Streaming 配置点播视频](on-demand-video.md#on-demand-streaming-smooth)。

## 限制查看器访问（使用签名 URL 或签名 Cookie）
<a name="DownloadDistValuesRestrictViewerAccess"></a>

如果您希望与该缓存行为的 `PathPattern` 匹配的对象请求使用公共 URL，请选择 **No**。

如果您希望与该缓存行为的 `PathPattern` 匹配的对象请求使用签名 URL，请选择 **Yes**。然后指定您希望用于创建签名 URL 的 AWS 账户；这些账户被称为可信签署人。

有关可信签署人的更多信息，请参阅[指定可以创建签名 URL 和签名 Cookie 的签署人](private-content-trusted-signers.md)。

## 可信签署人
<a name="DownloadDistValuesTrustedSigners"></a>

仅在您为**限制查看器访问（使用签名的 URL 或签名的 Cookie）**选择**是**时才适用。

选择您希望用作此缓存行为的可信签署人的 AWS 账户：
+ **本身：**将您当前登录到 AWS 管理控制台的账户作为可信签署人。如果您目前作为 IAM 用户登录，添加相关的 AWS 账户作为可信签署人。
+ **指定账户：**在 **AWS 账号**字段中输入可信签署人的账户号码。

要创建可信签署人 URL，AWS 账户必须至少具有一个有效的 CloudFront 密钥对。

**重要**  
如果您更新您已经用于分发内容的分配，则在准备开始产生对象的签名 URL 时只添加可信签署人。在您把可信签署人添加到分配为后，用户必须使用签名 URL 访问与该缓存行为 `PathPattern` 匹配的对象。

## AWS 账户 数字
<a name="DownloadDistValuesAWSAccountNumbers"></a>

仅在您为**可信签署人**选择**指定账户**时才适用。

除当前账户之外或替代当前账户，如果您想使用 AWS 账户 创建签名 URL，请在该字段每一行输入一个 AWS 账户 号。请注意以下几点：
+ 您指定的账户必须至少具有一个有效的 CloudFront 密钥对。有关更多信息，请参阅 [为签署人创建密钥对](private-content-trusted-signers.md#private-content-creating-cloudfront-key-pairs)。
+ 您不能为 IAM 用户创建 CloudFront 密钥对，因此，不能使用 IAM 用户作为可信签署人。
+ 有关如何获取账户的 AWS 账户编号的信息，请参阅《AWS 账户管理参考指南》**中的[查看 AWS 账户标识符](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html)。
+ 如果您输入当前账户的账户号码，CloudFront 则自动选中**本身**复选框，并从 **AWS 账号**列表中删除账号。

## 自动压缩对象
<a name="DownloadDistValuesCompressObjectsAutomatically"></a>

如果您希望 CloudFront 在查看器支持压缩内容时自动压缩某些类型的文件，请选择**是**。当 CloudFront 压缩内容时，由于文件更小，因此下载速度更快，并会更快地为用户呈现网页。有关更多信息，请参阅 [提供压缩文件](ServingCompressedFiles.md)。

## CloudFront 事件
<a name="DownloadDistValuesEventType"></a>

此设置适用于 **Lambda 函数关联**。

您可以选择在以下一个或多个 CloudFront 事件发生时，运行 Lambda 函数：
+ 在 CloudFront 收到查看器的请求时（查看器请求）
+ 在 CloudFront 将请求转发到源之前（源请求）
+ 在 CloudFront 收到来自源的响应时（源响应）
+ 在 CloudFront 将响应返回到查看器之前（查看器响应）

有关更多信息，请参阅 [选择要触发函数的事件](lambda-how-to-choose-event.md)。

## Lambda 函数 ARN
<a name="DownloadDistValuesLambdaFunctionARN"></a>

此设置适用于 **Lambda 函数关联**。

指定要为其添加触发器的 Lambda 函数的 Amazon 资源名称（ARN）。要了解如何获取函数的 ARN，请参阅[使用 CloudFront 控制台添加触发器](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-add-triggers.html#lambda-edge-add-triggers-cf-console)过程的步骤 1。

## 包含正文
<a name="include-body"></a>

此设置适用于 **Lambda 函数关联**。

有关更多信息，请参阅[包括正文](lambda-generating-http-responses.md#lambda-include-body-access)。

# 分配设置
<a name="DownloadDistValuesGeneral"></a>

以下值适用于整个分配。

**Topics**
+ [价格级别](#DownloadDistValuesPriceClass)
+ [AWS WAF Web ACL](#DownloadDistValuesWAFWebACL)
+ [备用域名 (CNAME)](#DownloadDistValuesCNAME)
+ [SSL 证书](#DownloadDistValuesSSLCertificate)
+ [自定义 SSL 客户端支持](#DownloadDistValuesClientsSupported)
+ [安全策略（最低 SSL/TLS 版本）](#DownloadDistValues-security-policy)
+ [支持的 HTTP 版本](#DownloadDistValuesSupportedHTTPVersions)
+ [默认根对象](#DownloadDistValuesDefaultRootObject)
+ [标准日志记录](#DownloadDistValuesLoggingOnOff)
+ [连接日志](#DownloadDistValuesConnectionLogs)
+ [日志前缀](#DownloadDistValuesLogPrefix)
+ [Cookie 日志记录](#DownloadDistValuesCookieLogging)
+ [启用 IPv6（查看器请求）](#DownloadDistValuesEnableIPv6)
+ [双向身份验证](#DownloadDistValuesMutualAuthentication)
+ [为自定义源启用 IPv6（源请求）](#DownloadDistValuesEnableIPv6-origin)
+ [注释](#DownloadDistValuesComment)
+ [分配状态](#DownloadDistValuesEnabled)

## 价格级别
<a name="DownloadDistValuesPriceClass"></a>

选择与您想为 CloudFront 服务支付的最高价对应的价格级别。默认情况下，CloudFront 从所有 CloudFront 区域的边缘站点提供您的对象。

有关价格级别以及您选择的价格级别如何影响分配的 CloudFront 性能的更多信息，请参阅 [CloudFront 定价](https://aws.amazon.com/cloudfront/pricing/)。

## AWS WAF Web ACL
<a name="DownloadDistValuesWAFWebACL"></a>

您可以使用 [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf) 来保护您的 CloudFront 分配，这是一个 Web 应用程序防火墙，可让您保护您的 Web 应用程序和 API，以在请求到达服务器之前阻止请求。您可以在创建或编辑 CloudFront 分配时[为分配启用 AWS WAF](WAF-one-click.md)。

或者，您可以稍后在 AWS WAF 控制台（[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/)）中为特定于您的应用程序的其他威胁配置额外的安全保护。

有关 AWS WAF 的更多信息，请参阅《AWS WAF 开发人员指南》[https://docs.aws.amazon.com/waf/latest/developerguide/](https://docs.aws.amazon.com/waf/latest/developerguide/)。

## 备用域名 (CNAME)
<a name="DownloadDistValuesCNAME"></a>

可选。指定您想用于对象 URL 的一个或多个域名，代替您创建分配时 CloudFront 指派的域名。您必须拥有该域名，或有权使用它，您可以通过添加 SSL/TLS 证书来验证这一点。

 例如，如果您希望对象的 URL：

`/images/image.jpg`

像这样：

`https://www.example.com/images/image.jpg`

而不是这样：

`https://d111111abcdef8.cloudfront.net/images/image.jpg`

为 `www.example.com` 添加 CNAME。

**重要**  
如果将 `www.example.com` 的 CNAME 添加到您的分配中，还必须执行以下操作：  
创建（或更新）一条 CNAME 记录，让您的 DNS 服务将对 `www.example.com` 的查询路由到 `d111111abcdef8.cloudfront.net`。
将来自可信证书颁发机构 (CA) 的一个证书添加到 CloudFront，该证书中涵盖您添加到分配中的域名 (CNAME)，以来验证您是否被授权使用该域名。
您必须具有权限才能创建 CNAME 记录，并指定域的 DNS 服务提供商。通常，这意味着您拥有该域，或者您正在为域所有者开发应用程序。

有关您可以添加到分配的当前最大备用域名数，或者要请求提高配额（以前称为限制），请参阅[分配的一般配额](cloudfront-limits.md#limits-web-distributions)。

更多有关备用域名的信息，请参阅 [通过添加备用域名（CNAME）使用自定义 URL](CNAMEs.md)。有关 CloudFront URL 的更多信息，请参阅[在 CloudFront 中自定义文件的 URL 格式](LinkFormat.md)。

## SSL 证书
<a name="DownloadDistValuesSSLCertificate"></a>

如果指定一个备用域名来与您的分配结合使用，请选择**自定义 SSL 证书**，然后，要想验证您是否获得授权使用该备用域名，请选择一个涵盖它的证书。如果您希望查看器使用 HTTPS 访问您的对象，请选择支持此操作的设置。
+ **默认 CloudFront 证书 (\$1.cloudfront.net)** – 如果要在您的对象的 URL 中使用 CloudFront 域名，如 `https://d111111abcdef8.cloudfront.net/image1.jpg`，请选择该选项。
+ **自定义 SSL 证书** – 如果要将对象的 URL 中的您自己的域名作为备用域名，例如 `https://example.com/image1.jpg`，则选择该选项。然后，选择一个涵盖该备用域名的证书。证书列表中可以包括以下任一证书：
  +  提供的证书AWS Certificate Manager
  + 您从第三方证书颁发机构购买并上传到 ACM 的证书
  + 您从第三方证书颁发机构购买并上传到 IAM 证书存储的证书

  如果选择此设置，则建议您只在对象 URL 中使用一个备用域名 (https://example.com/logo.jpg)。如果您使用 CloudFront 分配域名 (https://d111111abcdef8.cloudfront.net/logo.jpg)，而客户端使用较旧的不支持 SNI 得查看器，则查看器得响应取决于您为**支持的客户端**选择的值：
  + **所有客户端**：当 CloudFront 域名与 SSL/TLS 证书中的域名不匹配时，查看器将显示警告。
  + **仅支持服务器名称指示 (SNI) 的客户端**：CloudFront 将删除与查看器的连接而不返回对象。

## 自定义 SSL 客户端支持
<a name="DownloadDistValuesClientsSupported"></a>

仅在您为 **SSL 证书**选择**自定义 SSL 证书（example.com）**时才适用。如果为分配指定了一个或多个备用域名和自定义 SSL 证书，请选择您希望 CloudFront 如何处理 HTTPS 请求：
+ **支持服务器名称指示 (SNI) 的客户端 - (推荐)** – 使用此设置，几乎所有新式 Web 浏览器和客户端都可以连接到分配，因为它们支持 SNI。但是，某些查看器可能会使用较旧的 Web 浏览器或不支持 SNI 的客户端，这意味着他们无法连接到分配。

  要使用 CloudFront API 应用此设置，请在 `sni-only` 字段中指定 `SSLSupportMethod`。在 CloudFormation 中，此字段命名为 `SslSupportMethod`（注意不同的大写）。
+ **旧版客户端支持** – 使用此设置，旧版 Web 浏览器和不支持 SNI 的客户端可以连接到分配。但是，此设置会产生额外的月度费用。有关确切的价格，请转到 [Amazon CloudFront 定价](https://aws.amazon.com/cloudfront/pricing/)页面，然后在此页中搜索**专用 IP 自定义 SSL**。

  要使用 CloudFront API 应用此设置，请在 `vip` 字段中指定 `SSLSupportMethod`。在 CloudFormation 中，此字段命名为 `SslSupportMethod`（注意不同的大写）。

有关更多信息，请参阅 [选择 CloudFront 如何处理 HTTPS 请求](cnames-https-dedicated-ip-or-sni.md)。

## 安全策略（最低 SSL/TLS 版本）
<a name="DownloadDistValues-security-policy"></a>

指定希望 CloudFront 用于与查看器（客户端）建立 HTTPS 连接的安全策略。安全策略确定两个设置：
+ CloudFront 与查看器通信时使用的最低 SSL/TLS 协议。
+ CloudFront 可用来加密其返回给查看器的内容的密码

有关安全策略（包括每个策略包含的协议和密码）的更多信息，请参阅[查看器和 CloudFront 之间支持的协议和密码](secure-connections-supported-viewer-protocols-ciphers.md)。

可用的安全策略取决于您为**SSL 证书**和**自定义 SSL 客户端支持**指定的值（称为 CloudFront API 中的 `CloudFrontDefaultCertificate` 和 `SSLSupportMethod`）：
+ 在 **SSL 证书**是**默认 CloudFront 证书 (\$1.cloudfront.net)** 时（当 API 中 `CloudFrontDefaultCertificate` 是 `true` 时），CloudFront 将安全策略自动设置为 TLSv1。
+ 当 **SSL 证书**是**自定义 SSL 证书（example.com）***并且***自定义 SSL 客户端支持**是**支持服务器名称指示（SNI）的客户端 -（推荐）**时（在 API 中 `CloudFrontDefaultCertificate` 是 `false` *并且* `SSLSupportMethod` 是 `sni-only` 时），您可以从以下安全策略中进行选择：
  + TLSv1.3\$12025
  + TLSv1.2\$12025
  + TLSv1.2\$12021
  + TLSv1.2\$12019
  + TLSv1.2\$12018
  + TLSv1.1\$12016
  + TLSv1\$12016
  + TLSv1
+ 当 **SSL 证书**是**自定义 SSL 证书（example.com）***并且***自定义 SSL 客户端支持**是**旧版客户端支持**时（在 API 中 `CloudFrontDefaultCertificate` 是 `false` *并且* `SSLSupportMethod` 是 `vip` 时），您可以从以下安全策略中进行选择：
  + TLSv1
  + SSLv3

  在此配置中，TLSv1.3\$12025、TLSv1.2\$12025、TLSv1.2\$12021、TLSv1.2\$12019、TLSv1.2\$12018、TLSv1.1\$12016 和 TLSv1\$12016 安全策略在 CloudFront 控制台或 API 中不可用。如果要使用这些安全策略之一，您可以选择以下选项：
  + 评估您的分配是否需要具有专用 IP 地址的旧版客户端支持。如果查看器支持[服务器名称指示（SNI）](https://en.wikipedia.org/wiki/Server_Name_Indication)，建议您将分配的**自定义 SSL 客户端支持**设置更新为**支持服务器名称指示（SNI）的客户端**（在 API 中将 `SSLSupportMethod` 设置为 `sni-only`）。这使您能够使用任何可用的 TLS 安全策略，并且还可以降低您的 CloudFront 费用。
  + 如果您必须保留采用专用 IP 地址的旧版客户端支持，则可以通过在 [AWS 支持中心](https://console.aws.amazon.com/support/home)创建案例来请求其它 TLS 安全策略（TLSv1.3\$12025、TLSv1.2\$12025、TLSv1.2\$12021、TLSv1.2\$12019、TLSv1.2\$12018、TLSv1.1\$12016 或 TLSv1\$12016）之一。
**注意**  
在联系 AWS 支持以请求此更改之前，请考虑以下事项：  
当您将其中一个安全策略（TLSv1.3\$12025、TLSv1.2\$12025、TLSv1.2\$12021、TLSv1.2\$12019、TLSv1.2\$12018、TLSv1.1\$12016 或 TLSv1\$12016）添加到某个旧版客户端支持分配时，安全策略将应用于您的 AWS 账户中*所有*旧版客户端支持分配的*所有*非 SNI 查看器请求。但是，当查看器将 SNI 请求发送到具有旧版客户端支持的分配时，该分配的安全策略适用。要确保将您所需的安全策略应用于发送到 AWS 账户中*所有*旧版客户端支持分配的*所有*查看器请求，请将所需安全策略分别添加到每个分配。
根据定义，新安全策略不支持与旧安全策略相同的密码和协议。例如，如果您选择将分配的安全策略从 TLSv1 升级到 TLSv1.1\$12016，则该分配将不再支持 DES-CBC3-SHA 密码。有关每个安全策略支持的密码和协议的更多信息，请参阅[查看器和 CloudFront 之间支持的协议和密码](secure-connections-supported-viewer-protocols-ciphers.md)。

## 支持的 HTTP 版本
<a name="DownloadDistValuesSupportedHTTPVersions"></a>

选择您希望分配在查看器与 CloudFront 通信时支持的 HTTP 版本。

要使查看器和 CloudFront 使用 HTTP/2，查看器必须支持 TLSv1.2 或更高版本以及服务器名称标识 (SNI)。

要使查看器和 CloudFront 使用 HTTP/3，查看器必须支持 TLSv1.3 或更高版本以及服务器名称标识 (SNI)。CloudFront 支持 HTTP/3 连接迁移，允许查看器在不丢失连接的情况下切换网络。有关连接迁移的更多信息，请参阅 RFC 9000 中的[连接迁移](https://www.rfc-editor.org/rfc/rfc9000.html#name-connection-migration)。

**注意**  
有关受支持的 TLSv1.3 密码的更多信息，请参阅[查看器和 CloudFront 之间支持的协议和密码](secure-connections-supported-viewer-protocols-ciphers.md)。

**注意**  
如果您使用 Amazon Route 53，则可以使用 HTTPS 记录来支持将协议协商作为 DNS 查找的一部分（如果客户端支持）。有关更多信息，请参阅 [Create alias resource record set](CreatingCNAME.md#alternate-domain-https)。

## 默认根对象
<a name="DownloadDistValuesDefaultRootObject"></a>

可选。当查看器请求分发的根 URL (`index.html`) 而不是分发中的对象 (`https://www.example.com/`) 时，您希望 CloudFront 从您的源（例如，`https://www.example.com/product-description.html`）中请求的对象。指定一个默认根对象，以避免公开分配的内容。

名称的长度上限是 255 个字符。该名称可包含以下任何字符：
+ A-Z, a-z
+ 0-9
+ \$1 - . \$1 \$1 / \$1 " '
+ &，作为 `&amp;` 传递和返回

当您指定默认根对象时，请仅输入对象名称，例如 `index.html`。不要在对象名称前添加 `/`。

有关更多信息，请参阅 [指定默认根对象](DefaultRootObject.md)。

## 标准日志记录
<a name="DownloadDistValuesLoggingOnOff"></a>

指定您是否希望 CloudFront 记录对象的每个请求信息并存储日志文件。您可以随时启用或禁用日志记录。启用日志记录不会产生额外的费用，但您可能会产生存储和访问文件的费用。您可以随时删除日志文件。

CloudFront 支持以下标准日志记录选项：
+ [标准日志记录（v2）](standard-logging.md)– 您可以将日志发送到多种传输目标，包括 Amazon CloudWatch Logs、Amazon Data Firehose 和 Amazon Simple Storage Service（Amazon S3）。
+ [标准日志记录（传统）](AccessLogs.md)– 您只能将日志发送到 Amazon S3 存储桶。

## 连接日志
<a name="DownloadDistValuesConnectionLogs"></a>

当您为分配启用[双向身份验证](#DownloadDistValuesMutualAuthentication)时，CloudFront 会提供连接日志，这些日志捕获有关发送到分配的请求的属性。连接日志包含客户端 IP 地址和端口、客户端证书信息、连接结果以及正在使用的 TLS 密码等信息。然后可以使用这些连接日志来查看请求模式和其他趋势。

要了解有关连接日志的更多信息，请参阅[使用连接日志实现可观测性](connection-logs.md)。

## 日志前缀
<a name="DownloadDistValuesLogPrefix"></a>

（可选）如果您启用标准日志记录（旧版），请指定您希望 CloudFront 为此分配的访问日志文件名添加作为前缀的字符串（如有），例如 `exampleprefix/`。尾随斜杠 (/) 是可选的，但建议简化浏览您的日志文件。有关更多信息，请参阅 [配置标准日志记录（旧版）](standard-logging-legacy-s3.md)。

## Cookie 日志记录
<a name="DownloadDistValuesCookieLogging"></a>

如果希望 CloudFront 将 cookie 包含在访问日志中，请选择**开启**。如果您选择将 cookie 包含在日志中，CloudFront 则记录所有 cookie，而不管您如何配置此分配的缓存行为：转发所有 cookie，不转发 cookie，或将指定的 cookie 列表转发到源。

Amazon S3 不处理 cookie，因此除非您的分配也包括 Amazon EC2 或其他自定义源，否则建议您为 **Cookie 日志记录**的值选择**关闭**。

有关 cookies 的更多信息，请参阅 [根据 Cookie 缓存内容](Cookies.md)。

## 启用 IPv6（查看器请求）
<a name="DownloadDistValuesEnableIPv6"></a>

如果您希望 CloudFront 响应来自 IPv4 和 IPv6 IP 地址的查看器请求，请选择**启用 IPv6**。有关更多信息，请参阅 [为 CloudFront 分配启用 IPv6](cloudfront-enable-ipv6.md)。

## 双向身份验证
<a name="DownloadDistValuesMutualAuthentication"></a>

可选。您可以选择为 CloudFront 分配启用双向身份验证。有关更多信息，请参阅 [CloudFront 的双向 TLS 身份验证（查看器 mTLS）源双向 TLS 与 CloudFront 结合使用](mtls-authentication.md)。

## 为自定义源启用 IPv6（源请求）
<a name="DownloadDistValuesEnableIPv6-origin"></a>

当您使用自定义源（不包括 Amazon S3 和 VPC 源）时，您可以自定义分配的源设置，以选择 CloudFront 如何使用 IPv4 或 IPv6 地址连接到源。有关更多信息，请参阅 [为 CloudFront 分配启用 IPv6](cloudfront-enable-ipv6.md)。

## 注释
<a name="DownloadDistValuesComment"></a>

可选。在创建分配时，您最多可以包含 128 字符的注释。您可以随时更新注释。

## 分配状态
<a name="DownloadDistValuesEnabled"></a>

表明您是否希望分配在一经部署时就被启用或禁用：
+ *已启用*是指，只要分配一经全面部署，您就可部署使用分配域名的链接，并且用户可检索内容。无论何时启用分配，CloudFront 将接受并处理任何最终用户使用与该分配有关的域名对内容的请求。

  当您创建、修改或删除 CloudFront 分配时，需要一定的时间才能将您所做的更改传播到 CloudFront 数据库。即刻发起的对分配相关信息的请求可能不会显示出该更改。传播通常在几分钟内完成，但高系统负载或网络分区可能会延长该时间。
+ *已禁用*是指，即使分配可能已经部署且准备好使用，用户也不能使用它。无论何时禁用分配，CloudFront 都不接受任何最终用户使用与该分配有关的域名对内容的请求。除非您将分配从禁用切换到启用（通过更新分配的配置），否则任何人都不能使用它。

您可根据您想要的频率在禁用和启用之间转换分配。遵照更新分配配置的过程。有关更多信息，请参阅 [更新分配](HowToUpdateDistribution.md)。

# 自定义错误页面和错误缓存
<a name="DownloadDistValuesErrorPages"></a>

您可以让 CloudFront 在您的 Amazon S3 或自定义源向 CloudFront 返回 HTTP 4xx 或 5xx 状态代码时向查看器返回一个对象（例如 HTML 文件）。您还可以指定从您的源发出的错误响应或自定义错误页面缓存在 CloudFront 边缘缓存中进行缓存的时长。有关更多信息，请参阅 [为特定 HTTP 状态代码创建自定义错误页面](creating-custom-error-pages.md)。

**注意**  
以下值不包含在“创建分配”向导中，所以您只能在更新分配时配置自定义错误页面。

**Topics**
+ [HTTP 错误代码](#DownloadDistValuesErrorCode)
+ [响应页面路径](#DownloadDistValuesResponsePagePath)
+ [HTTP 响应代码](#DownloadDistValuesResponseCode)
+ [错误缓存最小 TTL（秒）](#DownloadDistValuesErrorCachingMinTTL)

## HTTP 错误代码
<a name="DownloadDistValuesErrorCode"></a>

您希望 CloudFront 返回自定义错误页面时所对应的 HTTP 状态代码。您可以将 CloudFront 配置为返回 CloudFront 缓存的无、部分或全部 HTTP 状态代码的自定义错误页面。

## 响应页面路径
<a name="DownloadDistValuesResponsePagePath"></a>

在源返回您为**错误代码**指定的 HTTP 状态代码（如 403）时，您希望 CloudFront 返回到查看器的自定义错误页面的路径（如 `/4xx-errors/403-forbidden.html`）。如果您希望将您的对象和自定义错误页面存储在不同的位置，您的分配必须包含满足以下条件时的缓存行为：
+ **Path Pattern** 的值与您的自定义错误消息的路径匹配。例如，假设您在 Amazon S3 存储桶中名为 `/4xx-errors` 的目录下为 4xx 错误保存了自定义错误页面。您的分配必须包含缓存行为，其路径模式将对自定义错误页面的请求路由至该位置，例如 **/4xx-errors/\$1**。
+ **源**值指定包含您的自定义错误页面的源的**源 ID** 值。

## HTTP 响应代码
<a name="DownloadDistValuesResponseCode"></a>

您希望 CloudFront 将其与自定义错误页面一起返回给查看器的 HTTP 状态代码。

## 错误缓存最小 TTL（秒）
<a name="DownloadDistValuesErrorCachingMinTTL"></a>

您希望 CloudFront 缓存从源服务器发出的错误响应的最短时间。

# 地理限制
<a name="DownloadDistValuesEnableGeoRestriction"></a>

如果您需要阻止选定国家/地区的用户访问您的内容，可以使用**允许列表**或**阻止列表**配置您的 CloudFront 分配。配置地理限制不收取额外费用。有关更多信息，请参阅 [限制您的内容的地理分配](georestrictions.md)。