

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

# 创建 Lightsail 内容分发网络发行版
<a name="amazon-lightsail-creating-content-delivery-network-distribution"></a>

在本指南中，我们将向您展示如何使用 Lightsail 控制台创建 Amazon Lightsail 发行版，并描述了您可以配置的分发设置。有关分配的更多信息，请参阅[内容分发网络分配](amazon-lightsail-content-delivery-network-distributions.md)。

**内容**
+ [先决条件](#distribution-prerequisites)
+ [源资源](#distribution-origin-resource)
+ [源协议策略](#distribution-origin-protocol-policy)
+ [缓存行为和缓存预设](#distribution-caching-preset)
+ [最适合 WordPress 缓存预设](#wordpress-distribution-preset)
+ [默认行为](#distribution-default-behavior)
+ [目录和文件覆盖](#distribution-directory-file-overrides)
+ [高级缓存设置](#distribution-advanced-settings)
+ [分配计划](#distribution-plan)
+ [创建分配](#creating-a-distribution)
+ [后续步骤](#creating-distribution-next-steps)

## 先决条件
<a name="distribution-prerequisites"></a>

在开始创建分配之前，请满足以下先决条件：

1. 根据您是在分配中使用实例、容器服务还是存储桶，完成以下其中一项操作。
   + **创建一个 Lightsail 实例来托管你的内容。**实例将用作分配的源。源存储内容的原始最终版本。有关更多信息，请参阅[创建实例](how-to-create-amazon-lightsail-instance-virtual-private-server-vps.md)。

     **将 Lightsail 静态 IP 附加到您的实例。**如果您停止并启动实例，则实例的默认公有 IP 地址会发生变化，这将中断您的分配与源实例之间的连接。如果您停止和启动实例，静态 IP 不会更改。有关更多信息，请参阅[创建静态 IP 并将其附加到实例](lightsail-create-static-ip.md)。

     **将您的内容和文件上传到实例。**您的文件也称为*对象*，通常包括网页、图像和媒体文件，但可以是可通过 HTTP 提供的任何内容。
   + **创建 Lightsail 容器服务来托管您的网站或 Web 应用程序。**容器服务将用作分配的源。源存储内容的原始最终版本。有关更多信息，请参阅[创建 Amazon Lightsail 容器服务](amazon-lightsail-creating-container-services.md)。
   + **创建一个 Lightsail 存储桶来存储你的静态内容。**存储桶将用作分配的源。源存储内容的原始最终版本。有关更多信息，请参阅[创建存储桶](amazon-lightsail-creating-buckets.md)。

     使用 Lightsail 控制台 AWS Command Line Interface （AWS CLI）和，将文件上传到您的存储桶。 AWS APIs有关上传文件的更多信息，请参阅[将文件上传到存储桶](amazon-lightsail-uploading-files-to-a-bucket.md)。

1. （可选）如果您的网站需要容错，请创建 Lightsail 负载均衡器。将实例的多个副本附加到负载均衡器。您可以将负载均衡器（附加了一个或多个实例）配置为分配的源，而不是将实例配置为源。有关更多信息，请参阅[创建负载均衡器并向其附加实例](create-lightsail-load-balancer-and-attach-lightsail-instances.md)。

## 源资源
<a name="distribution-origin-resource"></a>

*源*是分配内容的确定来源。创建分配时，您可以选择托管您的网站或 Web 应用程序内容的 Lightsail 实例、容器服务、存储桶或负载均衡器（附加了一个或多个实例）。

**注意**  
IPv6目前无法将仅限于-的实例配置为 Lightsail 内容分发网络 (CDN) 分发的来源。

每个分配只能选择一个源。您可以在创建分配后随时更改源。有关更多信息，请参阅[更改分配的源](amazon-lightsail-changing-distribution-origin.md)。

![\[分配源选择器\]](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-distribution-choose-origin.png)


## 源协议策略
<a name="distribution-origin-protocol-policy"></a>

源协议策略是在从源中提取内容时分配使用的协议策略。选择分配的源之后，您应确定在从源中提取内容时分配是使用超文本传输协议 (HTTP) 还是安全超文本传输协议 (HTTPS)。如果源没有进行 HTTPS 配置，则必须使用 HTTP。

您可以为分配选择以下源协议策略之一：
+ **仅 HTTP** - 分配仅使用 HTTP 访问源。这是默认设置。
+ **仅 HTTPS** - 分配仅使用 HTTPS 访问源。

编辑源协议策略的步骤包含在本指南的以下[更改分配的源](#creating-a-distribution)部分。

**注意**  
当您选择 Lightsail 存储桶作为分配的来源时，Ori **gin 协议策略默认为仅** **HTTPS**。当存储桶是分配的源时，您无法更改源协议策略。

## 缓存行为和缓存预设
<a name="distribution-caching-preset"></a>

*缓存预设*为在源上托管的内容类型自动配置分配设置。例如，选择**最适合静态内容**预设会自动将分配配置为最适合静态网站的设置。如果您的网站托管在 WordPress 实例上，请选择 “**最适合 WordPress**预设”，将您的发行版自动配置为与您的 WordPress 网站配合使用。

**注意**  
当您选择 Lightsail 存储分区作为分发源时，缓存预设选项不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。

您可以为分配选择以下缓存预设之一：
+ **最适合静态内容** - 此预设将分配配置为*缓存所有内容*。如果您在源上托管静态内容（例如静态 HTML 页面），或者对于每个访问网站的用户来说内容不会更改，则非常适合使用此预设。选择此预设后，将缓存分配的所有内容。
+ **最适合动态内容** - 此预设将分配配置为除了在**创建分配**页面的**目录和文件覆盖**部分指定为**缓存**的文件，将不缓存任何内容。有关更多信息，请参阅本指南下文中的[目录和文件覆盖](#distribution-directory-file-overrides)。如果您在源上托管动态内容，或者每个访问网站或 Web 应用程序的用户可以更改内容，则非常适合使用此预设。
+ **最适 WordPress**合-此预设将您的发行版配置为*只缓存* WordPress实例`wp-includes/`和`wp-content/`目录中的文件。如果您的来源是使用 Certified **by Bitnami 和 Automattic** 蓝图（不包括多站点蓝图）的实例，则此预设非常理想。WordPress 有关此预设的更多信息，请参阅[最适合 WordPress 缓存预设](#wordpress-distribution-preset)。
**注意**  
无法选择**自定义设置**预设。如果您选择了预设，但随后手动修改分配的设置，则系统会自动为您选择该预设。

只能在 Lightsail 控制台中指定缓存预设。无法使用 Lightsail API 和进行指定。 AWS CLI SDKs

## 最适合 WordPress 缓存预设
<a name="wordpress-distribution-preset"></a>

当你选择一个使用 Certified **by Bitnami 和 Automattic** 蓝图作为发行版来源的实例时，Lightsail 会询问你是否要将**最适合 WordPress**缓存的预设应用于你的分发。WordPress 如果您应用现在，则您的发行版将自动配置为最适合您的 WordPress 网站。没有其他需要应用的分配设置。最适合 WordPress 预设为除了 WordPress网站`wp-includes/`和`wp-content/`目录中的文件之外*什么都不缓存*。它还会将您的分配配置为每天清除缓存（缓存寿命为 1 天）、允许所有的 HTTP 方法、仅转发 `Host` 标头、不转发 Cookie 以及转发所有查询字符串。

**重要**  
您必须编辑实例中的 WordPress 配置文件才能使您的 WordPress网站与您的发行版配合使用。有关更多信息，请参阅[配置您的 WordPress实例以与您的分配配](amazon-lightsail-editing-wp-config-for-distribution.md)合使用。

## 默认 行为
<a name="distribution-default-behavior"></a>

*默认行为*指定分配如何处理内容缓存。系统会根据您选择的[缓存预设](#distribution-caching-preset)，自动为您指定分配的默认行为。如果选择不同的默认行为，缓存预设会自动更改为**自定义设置**。

**注意**  
当您选择 Lightsail 存储分区作为分发来源时，默认行为选项不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。

您可以为分配选择以下默认行为之一：
+ **缓存所有内容** - 此行为将您的分配配置为缓存并将您的整个网站作为静态内容提供服务。如果源托管的内容不会因查看者而变化，或者您的网站没有使用 Cookie、标头或查询字符串来个性化内容，则非常适合使用此选项。
+ **不缓存任何内容** - 此行为将您的分配配置为仅缓存源文件和您指定的文件夹路径。如果您的网站或 Web 应用程序使用 Cookie、标题和查询字符串为单个用户个性化内容，则非常适合使用此选项。如果选择此选项，您*必须*指定要缓存的[目录和文件路径覆盖](#distribution-directory-file-overrides)。

## 目录和文件覆盖
<a name="distribution-directory-file-overrides"></a>

*目录和文件覆盖*可用于覆盖您选择的默认行为或添加例外。例如，如果您选择*缓存所有内容*，可通过覆盖指定分配不应缓存的目录、文件或文件类型。或者，如果您选择*不缓存任何内容*，可通过覆盖指定分配应缓存的目录、文件或文件类型。

在页面的**目录和文件覆盖**部分，您可以指定要缓存或不缓存的目录或文件的路径。使用星号可指定通配符目录 (`path/to/assets/*`) 和文件类型（`*.html`、`*jpg`、`*js`）。目录和文件路径区分大小写。

**注意**  
当您选择 Lightsail 存储桶作为分发源时，目录和文件覆盖选项不可用。将缓存存储在选定存储桶中的所有内容。

这些只是如何指定目录和文件覆盖的几个示例：
+ 指定以下内容以缓存在 Lightsail 实例上运行的 Apache Web 服务器的文档根目录中的所有文件。

  ```
  var/www/html/
  ```
+ 指定以下设置以仅缓存 Apache Web 服务器文档根目录中的索引页面。

  ```
  var/www/html/index.html
  ```
+ 指定以下设置以仅缓存 Apache Web 服务器文档根目录中的 .html 文件。

  ```
  var/www/html/*.html
  ```
+ 指定以下设置以仅缓存 Apache Web 服务器文档根目录的镜像子目录中的 .jpg、.png 和 .gif 文件。

  ```
  var/www/html/images/*.jpg
  ```

  ```
  var/www/html/images/*.png
  ```

  ```
  var/www/html/images/*.gif
  ```

  指定以下设置以缓存 Apache Web 服务器文档根目录的镜像子目录中的所有文件。

  ```
  var/www/html/images/
  ```

## 高级缓存设置
<a name="distribution-advanced-settings"></a>

*高级设置*可用于指定分配中内容的缓存寿命、允许的 HTTP 方法、HTTP 标头转发、Cookie 转发和查询字符串转发。指定的高级设置仅应用于分发缓存的目录和文件，包括指定为**缓存**的目录和文件覆盖。

**注意**  
当您选择 Lightsail 存储分区作为**分配来源时，创建分发**页面上的高级缓存设置不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。但是，创建分配后您可以在分配管理页面中修改高级缓存设置。

您可以配置以下高级设置：

**缓存寿命 (TTL)**

控制在分配将另一个请求转发到源以确定内容是否已更新之前，内容在分配缓存中保留的时间。默认值为一天。减少此持续时间可以更好地提供动态内容。增加此持续时间意味着您的用户将获得更好的性能，因为更有可能从边缘站点直接提供文件。增加此持续时间还会降低源的负载，因为分配提取内容的频率更低。

**注意**  
仅当来源没有向内容添加 HTTP 标头（如 `Cache-Control max-age`、`Cache-Control s-maxage` 和 `Expires`）时才应用指定的缓存寿命值。

**允许的 HTTP 方法**

控制您的分配处理和转发到源的 HTTP 方法。HTTP 方法指示需要在源上执行的操作。例如，GET 方法从源检索数据，PUT 方法请求将所包含的实体存储在源上。

您可以为分配选择以下 HTTP 方法选项之一：
+ **允许 GET、HEAD、OPTIONS、PUT、POST、PATCH 和 DELETE 方法**
+ **允许 GET、HEAD 和 OPTIONS 方法**
+ **允许 GET 和 HEAD 方法**

分配会始终缓存对 GET 和 HEAD 请求的响应。如果您选择允许这些请求，则您的分配还会缓存对 OPTIONS 请求的响应。分配不会缓存对任何其他 HTTP 方法的响应。有关更多信息，请参阅 [HTTPS 方法](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-distribution-request-and-response#RequestCustomHTTPMethods)。

**重要**  
如果您将分配配置为允许支持的所有 HTTP 方法，则必须将源实例配置为处理所有方法。例如，如果由于要使用 POST 而将分配配置为允许这些方法，则必须配置源服务器以相应地处理 DELETE 请求，以便查看器无法删除您不希望删除的资源。有关更多信息，请搜索网站或 Web 应用程序的文档。

**HTTP 标头转发**

控制分配是否根据指定的标头值缓存内容，如果是，则要缓存哪些内容。HTTP 标头包含有关客户端浏览器、请求的页面、源等方面的信息。例如，`Accept-Language` 标头发送客户端的语言（例如 `en-US` 为英语），以便源可以用客户端语言响应内容（如果可用）。

您可以为分配选择以下 HTTP 标头选项之一：
+ **不转发任何标头**
+ **仅转发我指定的标头**

如果您选择**不转发任何标头**，则分配不会根据标头值缓存您的内容。无论您选择哪个选项，分配都会将特定标头转发到您的源并根据您转发的标头执行特定操作。有关分配如何处理标头转发的更多信息，请参阅 [HTTP 请求标头和分配行为](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-distribution-request-and-response#request-custom-headers-behavior)。

**Cookie 转发**

控制您的分配是否将 Cookie 转发到源，如果是，则要转发哪些 Cookie。Cookie 包含发送到源的一小部分数据，例如访问者在源的 Web 页面上的操作信息，以及访问者提供的任何信息（例如他们的姓名和兴趣）。

您可以为分配选择以下 Cookie 转发选项之一：
+ **不转发 Cookie**
+ **转发所有 Cookie**
+ **转发我指定的 Cookie**

如果您选择**转发所有 Cookie**，不管您的应用程序使用多少 Cookie， 分配都会转发所有 Cookie。如果您选择**转发我指定的 Cookie**，则在显示的文本框中输入您希望分配转发的 Cookie 的名称。指定 Cookie 名称时可以使用以下通配符：
+ \$1 匹配 Cookie 名称中的 0 个或多个字符
+ ? 与 Cookie 名称中的 1 个字符完全匹配

例如，假设对象的查看器请求包含一个名为 `userid_member-number` 的 Cookie。其中，您的每个用户对于 `member-number` 均有一个唯一的值（`userid_123`、`userid_124`、`userid_125` 等）。您希望分配为每个成员缓存内容的单独版本。您可以通过将所有 Cookie 转发到源来完成该操作，但查看器请求包含一些您希望分配不要缓存的 Cookie。您可以指定以下值以作为 Cookie 名称，这会导致您的分配将所有以 `userid_` 开头的 Cookie 转发到源：`userid_*`

**查询字符串转发**

控制您的分配是否将查询字符串转发到源，如果是，则要转发哪些查询字符串。查询字符串是为将值分配给指定参数的一部分 URL。例如，`https://example.com/over/there?name=ferret` URL 包含 `name=ferret` 查询字符串。当服务器收到此类页面的请求时，它可能会运行一个程序，将 `name=ferret` 查询字符串原封不动地传递给程序。问号将用作分隔符，而不是查询字符串的一部分。

您可以选择让您的分配不转发任何查询字符串，或者选择仅转发指定的查询字符串。如果源返回相同版本的内容，则无论查询字符串参数的值为何，请选择不转发查询字符串。这增加了分配可从缓存处理请求的可能性，将提高性能并降低源的负载。如果您的源服务器根据一个或多个查询字符串参数返回不同版本的内容，请选择此选项，以仅转发您指定的查询字符串。

## 分配计划
<a name="distribution-plan"></a>

*分配计划*指定每月数据传输配额和分配成本。如果分配传输的数据超过计划的每月数据传输配额，则会向您收取超额费用。有关更多信息，请参阅 [Lightsail 定价页](https://aws.amazon.com/lightsail/pricing/)。

为避免超额费用，请将分配的当前计划更改为不同的计划，以在分配超出每月配额之前提供更大的每月数据传输量。在每个 AWS 计费周期内，您只能更改一次分配的计划。有关在创建分配套餐后更改分配套餐的更多信息，请参阅[更改分配套餐](amazon-lighstail-changing-distribution-plan.md)。

## 创建分配
<a name="creating-a-distribution"></a>

完成以下过程以创建分配。

1. 登录 [Lightsail 控制台](https://lightsail.aws.amazon.com/)。

1. 在左侧导航窗格中，选择**联网**。

1. 选择**创建分配**。

1. 在页面的**选择您的源**部分，选择您在其中创建了源资源的 AWS 区域 。

   分配是全局资源。他们可以在任何来源中引用来源 AWS 区域，并在全球范围内分发其内容。

1. 选择您的源。源可以是 Lightsail 实例、容器服务、存储桶或负载均衡器（附加了一个或多个实例）。有关更多信息，请参阅[源资源](#distribution-origin-resource)。
**重要**  
如果您选择 Lightsail 容器服务作为分发的来源，Lightsail 会自动将分配的默认域名添加为容器服务上的自定义域。这使流量能够在您的分配和容器服务之间进行路由。但是，在某些情况下，您可能需要手动将分配的原定设置域名添加到容器服务中。有关更多信息，请参阅[将分配的原定设置域添加到容器服务](amazon-lightsail-adding-distribution-default-domain-to-container-service.md)。

1. （可选）要更改源协议策略，请选择在分配使用的当前源协议策略旁边显示的铅笔图标。有关更多信息，请参阅[源协议策略](#distribution-origin-protocol-policy)。

   此选项列在页面的**选择源**部分，在您为分配选择的源资源下面。
**注意**  
当您选择 Lightsail 存储桶作为分配的来源时，Ori **gin 协议策略默认为仅** **HTTPS**。当存储桶是分配的源时，您无法更改源协议策略。  
![\[源协议策略\]](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/origin-protocol-policy.png)

1. 选择分配的缓存行为（也称为缓存预设）。有关更多信息，请参阅[缓存行为和缓存预设](#distribution-caching-preset)。
**注意**  
当您选择 Lightsail 存储分区作为分发源时，缓存预设选项不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。

1. （可选）选择**显示所有设置**以查看分配的其他缓存行为设置。
**注意**  
当您选择 Lightsail 存储分区作为分发源时，缓存行为设置不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。

1. （可选）选择分配的默认行为。有关更多信息，请参阅[默认行为](#distribution-default-behavior)。
**注意**  
当您选择 Lightsail 存储分区作为分发来源时，默认行为选项不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。

1. （可选）选择**添加路径**以将目录和文件覆盖添加到分配的缓存行为中。有关更多信息，请参阅[目录和文件覆盖](#distribution-directory-file-overrides)。
**注意**  
当您选择 Lightsail 存储桶作为分发源时，目录和文件覆盖选项不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。

1. （可选）选择要为分配编辑的高级设置旁边显示的铅笔图标。有关更多信息，请参阅[高级缓存设置](#distribution-advanced-settings)。
**注意**  
当您选择 Lightsail 存储分区作为**分配来源时，创建分发**页面上的高级缓存设置不可用。我们会自动应用最适合存储桶中存储的静态内容的分配设置。但是，创建分配后您可以在分配管理页面中修改高级缓存设置。

1. 选择您的分配计划。有关更多信息，请参阅[分配计划](#distribution-plan)。

1. 为分配输入名称。

   资源名称：
   + 在你的 Lightsail 账户 AWS 区域 中，每个账户中必须是唯一的。
   + 必须包含 2 到 255 个字符。
   + 必须以字母数字字符或数字作为开头和结尾。
   + 可以包括字母数字字符、数字、句点、连字符和下划线。

1. 查看分配的成本。

1. 选择**创建分配**。

   将在片刻后创建您的分配。

## 后续步骤
<a name="creating-distribution-next-steps"></a>

在分配启动并运行后，我们建议您完成以下后续步骤。

1. 如果您的分配源是一个 WordPress 实例，则必须编辑实例中的 WordPress配置文件以使您的 WordPress 网站与您的分配配合使用。有关更多信息，请参阅[配置您的 WordPress实例以与您的分配配](amazon-lightsail-editing-wp-config-for-distribution.md)合使用。

1. （可选）在 Lightsail 控制台中创建 Lightsail DNS 区域来管理你的域名的 DNS。这使您可以轻松地将您的域名映射到您的 Lightsail 资源。有关更多信息，请参阅[创建 DNS 区域以管理域的 DNS 记录](lightsail-how-to-create-dns-entry.md)。或者，您也可以继续在当前托管的位置托管域的 DNS。

1. 为您的域名创建 Lightsail SSL/TLS 证书，以便将其用于您的发行版。Lightsail 发行版需要 HTTPS，因此您必须先为您的域名申请 SSL/TLS 证书，然后才能将其用于您的发行版。有关更多信息，请参阅[为您的发行版创建 SSL/TLS 证书](amazon-lightsail-create-a-distribution-certificate.md)。

1. 为您的分配启用自定义域，以便将域用于您的分配。启用自定义域名需要您指定为域名创建的 Lightsail SSL/TLS 证书。这会将您的域添加到分配中并启用 HTTPS。有关更多信息，请参阅[启用分配的自定义域](amazon-lightsail-enabling-distribution-custom-domains.md)。

1. 将别名记录添加到域的 DNS 以开始将域的流量路由到您的分配。添加别名记录后，将通过您的分配对访问域的用户进行路由。有关更多信息，请参阅[将域指向分配](amazon-lightsail-point-domain-to-distribution.md)。

1. 测试您的分配是否在缓存内容。有关更多信息，请参阅[测试分配](amazon-lightsail-testing-distribution.md)。