亚马逊云科技

广告

安信SSL证书

广告

AWS CloudFront免费网络加速教程

美国云服务器推荐

Amazon CloudFront是AWS推出的内容分发网络(CDN)服务,利用AWS全球骨干网络和边缘站点,能够将Web内容包括图片、视频、API 等以低延迟和高可用性分发至世界各地。本教程主要介绍如何使用AWS CloudFront对网站进行内容分发,实现对静态内容和动态内容的加速,最终降低终端用户访问网站或Web应用的延迟。

本教程以一个动静分离的源站为例,静态资源存储于S3(Amazon S3 是一种对象存储服务,可以存储网站静态资源,CloudFront 可以使用 Amazon S3 存储桶作为源为分发几乎任何类型的文件),动态资源来自于ALB后端的EC2。

本教程需用到以下AWS产品:

点击进入AWS官网免费试用

本次实验架构如下图所示:

AWS CloudFront

Amazon CloudFront网站加速效果示例:

AWS CloudFront

AWS CloudFront的常见术语:

1、Distribution:分配,是AWS CloudFront的基本单元,每个分配有唯一的ID以及CloudFront为其分配的域名(类似abcdefg13456789.cloudfront.net)。

2、Origin:源站,顾名思义,是需要被加速的站点,可以是S3存储桶,可以是ELB/EC2,可以是 Elemental MediaStore/MediaPackage,或者是用户自定义的站点(如第三方IDC中的HTTP Web服务器)。一个分配中可以有多个源站。

3、Behaviors:行为,AWS CloudFront通过路径匹配和优先级决定执行哪一个缓存行为,一个分配中可以有多个行为,并且每个行为对应一个源站。在行为中可以设置缓存TTL时间,允许的HTTP行为(GET,PUT,POST 等)等等。

一、注册AWS账号

1、 准备海外区亚马逊云科技账号

如果还没有账户,请先注册账户。注册登录后进入AWS控制台。海外区域业务或个人使用,请注册“海外区账户”。

2、 因国内政策要求,未备案域名无法提供网页服务,请准备一个已备案的域名,并准备好域名SSL证书。

3、本教程不对创建源站进行介绍,默认已创建源站或能使用Amazon S3、Elastic Load Balancing等创建源站。

二、创建Amazon S3存储桶作为静态资源源站

1、访问Amazon S3,点击创建存储桶。为存储桶命名(需全局唯一),并选择美国东部(弗吉尼亚北部)us-east-1作为AWS区域。保持其他设置为默认,完成创建。

创建Amazon S3存储桶

创建Amazon S3存储桶

2、下载示例静态主页文件hello-world-html.zip,解压后上传所有文件至S3存储桶。存储桶中将包含index.html和css文件夹(含style.css文件)。

创建Amazon S3存储桶

三、创建Amazon EC2实例作为Web源站

1、访问Amazon EC2管理控制台,确保AWS区域设置为弗吉尼亚北 (us-east-1),点击启动实例。

创建Amazon EC2实例

2、实例命名为cloudfront-getting-started,选择Amazon Linux 2 AMI作为操作系统。

创建Amazon EC2实例

3、保持默认的t2.micro实例类型,选择现有密钥对或创建新密钥对并下载保存。

创建Amazon EC2实例

4、网络设置保持默认,安全组允许来自互联网的HTTP流量。

创建Amazon EC2实例

5、展开高级详细信息菜单,在用户数据处复制如下代码,该代码将部署一个Node.js应用,会监听针对EC2 80端口的HTTP请求。当收到请求时,该应用会发回一个JSON格式的响应,包含请求中的HTTP Header信息。它也会解析查询字符串的信息,并从Web服务器返回查询数据。请点击启动实例按钮开始创建EC2实例。

#!/bin/bash

yum update -y
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
yum install -y nodejs

npm install pm2@latest -g

npm install express --save

cat <<'EOF' >> app.js
let express = require('express');
let app = express();

app.get('/api', (req, res) => {
console.log(JSON.stringify(req.headers));
let message = {
timestamp: new Date().toISOString(),
headers: req.headers,
};
res.json(message);
});

app.listen(80, () => {
console.log('api is up!');
});
EOF

sudo pm2 start ./app.js 
sudo pm2 startup systemd
sudo pm2 save
systemctl enable --now pm2-root.service

创建Amazon EC2实例

6、等待EC2实例创建成功,可以在浏览器中访问http://{EC2-IP}/api或http://{EC2-DNS-NAME}/api确保Web应用正常工作,将看到类似下图的响应。

创建Amazon EC2实例

四、创建AWS CloudFront分配并添加S3源站

1、进入Amazon CloudFront控制台,点击创建分配按钮。

创建AWS CloudFront

2、在源设置中,选择步骤1创建的S3存储桶作为源。设置源名为s3-origin-cloudfront-getting-started,并启用来源访问控制。

创建AWS CloudFront

3、 在源设置,来源访问处,选择来源访问控制设置(推荐),点击创建控制设置。

创建AWS CloudFront

4、保持控制设置的默认设置,点击创建按钮。将看到来源访问控制处的配置已更新。

创建AWS CloudFront

创建AWS CloudFront

5、设置缓存行为,查看器 – 查看器协议策略选择Redirect HTTP to HTTPS,保持默认的CachingOptimized缓存策略。

创建AWS CloudFront

创建AWS CloudFront

6、不启用Web应用程序防火墙(WAF),在设置 – 默认根对象中填入index.html。

创建AWS CloudFront

创建AWS CloudFront

7、创建AWS CloudFront分配后,更新S3存储桶权限以允许CloudFront分发内容。

创建AWS CloudFront

8、在存储桶策略处点击编辑。

创建AWS CloudFront

9、在策略编辑器中粘贴刚刚复制的策略,点击保存更改按钮。该策略将保护存储桶在不被公开访问的情况下由AWS CloudFront安全地分发存储桶内容。

创建AWS CloudFront

五、为AWS CloudFront分配添加EC2源站

1、在AWS CloudFront分配的源标签页中,创建EC2源,填入EC2公有IPv4地址,协议设为仅HTTP,名称为ec2-origin-cloudfront-getting-started。

分配添加EC2源站

分配添加EC2源站

2、将看到该AWS CloudFront分配除S3源站外已添加EC2源站。

分配添加EC2源站

3、进入CloudFront分配,在行为处,点击创建行为,为EC2源站创建缓存行为。

分配添加EC2源站

分配添加EC2源站

4、为EC2源站创建缓存行为,路径模式设置为/api,源和源组选择EC2源站,查看器协议策略选择Redirect HTTP to HTTPS。

分配添加EC2源站

5、缓存策略选择CachingDisabled,源请求策略选择AllViewer。完成创建后,EC2源站被添加。

分配添加EC2源站

6、为了保护EC2源站,使 HTTP 流量仅从AWS CloudFront进入 EC2,接下来将修改 EC2 实例所关联的安全组规则。回到 EC2 控制台,选中 Web 源站 EC2 实例,选中安全标签,点击 EC2 所关联的安全组资源。

分配添加EC2源站

7、进入 EC2 安全组的详情页面,点击编辑入站规则按钮。

分配添加EC2源站

8、首先删除规则类型为 HTTP,源为 0.0.0.0/0 的入站规则。随后,点击添加规则按钮,添加一条新的入站规则,规则类型为 HTTP,在源处键入 pl-,将在选项框中看到多个 VPC 托管前缀。选中带有 com.amazonaws.global 字段且 pl – 后字符位数较短的托管前缀,点击保存规则。修改完成后的安全组规则如下图所示。

分配添加EC2源站

分配添加EC2源站

9、在修改 EC2 安全组规则后,当再次访问该 EC2 实例的 IPv4 DNS 地址时将发生超时,这是因为使用 VPC 托管前缀保护 EC2 仅允许来自 CloudFront 的流量进入。接下来将验证通过 AWS CloudFront 加速访问 S3 静态资源和 EC2 API 服务的过程。

六、验证AWS CloudFront分配

1、在AWS CloudFront控制台复制分配域名至浏览器,访问后应看到S3存储桶中的index.html页面内容。

验证AWS CloudFront分配

2、通过无痕窗口再次访问,检查Response Headers中的x-cache状态是否显示为Hit from cloudfront,表明静态文件已被缓存。

验证AWS CloudFront分配

3、访问分配域名的/api路径,应看到类似直接访问EC2 IPv4地址的输出,且AWS CloudFront增加的其他HTTP头部信息。多次刷新页面观察x-cache始终为Miss from cloudfront,表明/api路径请求未经缓存、直接回源至EC2。

验证AWS CloudFront分配

七、为AWS CloudFront分配添加自定义域名并配置SSL证书

1、进入 CloudFront 分配控制台,在常规标签中,点击编辑按钮。

分配添加自定义域名并配置SSL证书

2、在设置中,点击自定义 SSL 证书下方的请求证书链接。

分配添加自定义域名并配置SSL证书

3、将在新标签页中进入 AWS Certificate Manager(ACM)控制台,请确保右上角区域为弗吉尼亚北部(us-east-1),点击下一步按钮。

分配添加自定义域名并配置SSL证书

4、在请求公有证书的完全限定域名处依次添加将使用的域名,如 www.example.com, *.example.com, example.com。验证方式选择默认的 DNS 验证。点击确定。

分配添加自定义域名并配置SSL证书

5、进入上一步所申请的证书详情,该证书在完成 DNS 验证之前将处于等待验证状态。如果使用 Amazon Route53 托管域名,请点击在 Route53 中创建记录按钮。如果使用其他 DNS 服务商,请将域中所显示的 CNMAE 记录添加至 DNS 解析中。

分配添加自定义域名并配置SSL证书

6、等待 DNS 解析生效,将看到证书状态变为已颁发。

分配添加自定义域名并配置SSL证书

7、回到 AWS CloudFront 分配设置页面,请点击自定义 SSL 证书右侧的刷新按钮,并在下拉菜单中选中刚刚由 ACM 创建的域名证书。在备用域名 (CNAME) 处,添加将使用的自定义域名如 www.example.com (自定义域名需要为 ACM 证书中添加的域名)。点击保存。

分配添加自定义域名并配置SSL证书

8、来到域名 DNS 解析服务处,如果域名托管在 Route53,请按下图所示添加记录并创建别名记录将自定义域名的流量解析至 CloudFront 分配。如果使用其他 DNS 服务商,请为域名创建 CNAME 记录解析至 CloudFront 分配域名。

分配添加自定义域名并配置SSL证书

9、等待 DNS 解析生效,在浏览器中输入自定义域名,将看到网站使用 HTTPS 协议进行访问并由 AWS AWS CloudFront交付内容。

等待 DNS 解析生效

八、终止资源

1、清空 S3 存储桶:打开 Amazon S3 控制台,进入步骤 1 中创建的 S3 存储桶,勾选步骤 1 中上传的文件,点击删除按钮。在是否永久删除对象的文本框中输入永久删除以确认。

终止资源

2、删除 S3 存储桶:打开 Amazon S3 控制台,选中步骤 1 中创建的 S3 存储桶,点击删除按钮,在是否删除存储桶的文本框中按提示键入存储桶名称以确认删除。

终止资源

3、终止 EC2 实例:打开 Amazon EC2 控制台,选中步骤 2 中创建的 EC2 实例,点击实例状态 – 终止实例,这将完全终止实例。

终止资源

4、禁用 AWS CloudFront 分配:打开 Amazon CloudFront 控制台,在分配列表中选中步骤 3 创建的 CloudFront 分配,点击禁用按钮,在弹窗中确认禁用。

终止资源

5、删除 AWS CloudFront 分配:等待 AWS CloudFront 分配的禁用状态修改完毕,点击删除按钮,在弹窗中确认删除。

终止资源

相关推荐:

亚马逊云科技新用户注册专享福利来袭 爆款服务免费试用

亚马逊VPS怎么免费领取 亚马逊免费VPS领取教程

如何利用AWS免费搭建大容量个人网盘

免费云服务器怎样申请?

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:938255063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RAKsmart美国服务器
返回顶部