

# 源设置
<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)。