前言
本文适合使用中国区亚马逊云服务,并使用中国区 CloudFront 对网站、视频等进行加速的用户。教程会以一个动静态分离的网站为例,其中静态资源以 S3 为源和动态 API 使用自定义源,指导如何配置全站加速的 CloudFront。如果您的用户和亚马逊云科技账户为海外区域,请参考这一篇进行配置。
CDN,即内容分发网络,通过使用大量更靠近终端用户的边缘节点,提高网站的访问速度和用户体验。使用 CDN 可以减少网站的加载时间,降低跳出率,增加流量和收益;同时还可以减轻源服务器的负载,提高网站的稳定性和安全性,并保证网站的可用性和可靠性。Amazon CloudFront 是一种快速的内容分发网络 (CDN) 服务,可以在开发人员友好环境中以低延迟和高传输速度向全球客户安全分发数据、视频、应用程序和 API。同时可以与 Amazon S3、Elastic Load Balancing 或 Amazon EC2 等服务无缝协作。
关于本教程 | |
---|---|
预计部署时间 | 快速上手教程 20 分钟 |
费用 | 免费套餐 |
受众 | 运维工程师、个人开发者 |
级别 | 初级 |
相关产品 | Amazon CloudFront, Amazon S3, Amazon EC2, Amazon Route53 |
相关行业 | 通用 |
上次更新日期 | 2023 年 6 月 |
教程说明
本教程以一个动静分离的源站为例,静态资源存储于 S3(Amazon S3 是一种对象存储服务,可以存储网站静态资源,CloudFront 可以使用 Amazon S3 存储桶作为源为您分发几乎任何类型的文件),动态资源来自于 ALB 后端的 EC2。
教程将分为 3 个步骤:
首先,您将创建 Amazon CloudFront 分配,添加自定义源站为默认回源地址;
其次,您将添加 S3 为静态内容回源源站;
最后,您将创建域名解析,使得您可以使用您的域名通过 CloudFront 进行加速访问。
首先简单介绍下 CloudFront 的常见术语:
- Distribution:分配,是 CloudFront 的基本单元,每个分配有唯一的 ID 以及CloudFront 为其分配的域名(类似 abcdefg13456789.cloudfront.net)。
- Origin:源站,顾名思义,是需要被加速的站点,可以是 S3 存储桶,可以是 ELB/EC2,可以是 Elemental MediaStore/MediaPackage,或者是用户自定义的站点(如第三方 IDC 中的 HTTP Web 服务器)。一个分配中可以有多个源站。
- Behaviors:行为,CloudFront 通过路径匹配和优先级决定执行哪一个缓存行为,一个分配中可以有多个行为,并且每个行为对应一个源站。在行为中可以设置缓存 TTL 时间,允许的 HTTP 行为(GET,PUT,POST 等)等等。
本节将涉及如下内容:
- 创建一个分配;
- 该分配有两个源站,其中一个是创建时添加的动态资源,源站使用自定义域名,该域名已指向 Elastic Load Balancing,主要提供 API 服务作为动态内容,另一个是后添加的静态资源,源站为 S3 存储桶;
- 两个行为,一个是默认行为对应回源自定义域,一个是新加的行为并对应源站 S3 存储桶;
- 使用 Elastic Load Balancing 创建自定义域,以及使用自定义域名解析到 Elastic Load Balancing、S3 源站创建等过程不做介绍。
第一步:创建 CloudFront 分配与默认源
-
1.1 在控制台,点击服务-搜索框搜索 CloudFront,点击进入 CloudFront 服务
-
1.2 CloudFront 服务-右上角-创建分配
-
1.3 默认源设置如下,其中源域为您要加速的动态资源部分,此处样例假设域名 origin.customer.com 已指向您的源站,如 Elastic Load Balancing的 CNAME 记录,请确保自定义源开放了防火墙等配置允许 CloudFront 访问。
-
1.4 动态资源行为设置如下:
-
1.5 配置 https 证书
-
1.6 证书上传:
- 您也可以使用China CloudFront SSL插件来自动帮您生成并上传证书
1.7 上传完证书后,点击“create distribution”即可。
1.8 如您的自定义源是负载均衡器或者 EC2,请添加安全组以允许 CloudFront 访问。为保护您的源站,建议流量仅从 CloudFront 回源。以下为源站添加安全组允许 CloudFront 回源的步骤。
-
1.9 创建新的安全组,点击服务-选择 ec2。
-
1.10 创建新的安全组,此处假设源端口为 80,注意 VPC选择源服务器或者负载均衡所在的 VPC。
-
1.11 将以上安全组绑定到源,以源为负载均衡器为例,选中实例-操作-修改安全组。
第二步:创建 S3 静态资源分配
-
2.1 点击刚建立好的 distribution
-
2.2 选择 Origins- create origin,新建第二个源
-
2.3 设置 S3 权限添加 CloudFront 访问,然后直接 create origin
-
2.4 选择 Behavior,创建回源行为。
-
2.5 配置回源行为
-
2.6 配置缓存键和缓存时间,默认以主机头+ URL 为缓存键,是否根据 cookies 等设置缓存键以业务实际情况为主,缓存键说明参考该文档*。
-
2.7 配置完成,直接点 create behavior 即可,到此您已创建了两个行为,当访问路径为 /static/* 时,将回源到 S3,当访问路径不为 /static/* 时,将回源到您的自定义源。
第三步:设置域名解析
在中国区账号,您不能使用默认 CloudFront 域*.cloudfront.cn 来提供内容。您必须向 CloudFront 分配添加备用域名(也称为别名记录),然后在内容 URL 中使用该域名,因此您需要将您的备用域名指向 CloudFront 域。此步骤主要将您的访问域名指 CloudFront。您的域名为第一步中添加 CloudFront 访问域名,以您的DNS服务提供商为 Route53 示例。
至此,您已解析您的域名到 CloudFront,您将可以通过您的域名访问到服务,并已经过 CloudFront 进行加速。
小结
在本教程中,您使用 CloudFront 创建了一个网站静态内容和动态内容的加速。静态内容来自于 S3,动态内容来自于您的自定义源站。并为不同的源站设置了不同的缓存行为。然后您使用域名解析,指向 CloudFront 提供的 CNAME 域名,最终由您的自定义域名向用户提供访问。