CloudFront+WordPress实现全站CDN

准备工作

CloudFront 是 Amazon 家的东西,所以需要准备一个 AWS 账号
AWS 账号审查机制可谓是全球几大知名服务商里最松的了,虚拟信用卡就可以过验证,,所以注册并不麻烦,某宝上面一刀信用卡特别多实在不行可以去拍一张,这里不再

开始配置

打开 AWS 控制台,点击 CloudFront

然后点击 Create Distribution,在 Web 栏下面点击 Get started 即开始配置

配置 Origin Settings 回源设置

Origin Domain Name 就是你的源站域名(请注意 CloudFront 源站不接受 ip 地址,强制使用域名,我也不知道为什么)

但是请注意,这里的 Origin Domain Name 可不能填写网站的主域名,比如对于奶冰的 IceBox 来说这里就不能直接填写 milkice.me,而是要开个子域名直接指向源站 IP,比如这里的 www.milkice.me 就是开了个 A 记录到源站 IP

Origin Path 就是你想要加速的路径(默认为空)

比如你的源站地址是 http://example.com/wordpress ,则 Origin Domain Name 这里可以填写一个 xxx.example.com,然后 DNS 记录里设置 xxx.example.com 指向源站 ip,Origin Path 填写 /wordpress

如果你想要部署强制 https 可以选择 HTTPS only,其他选项不变即

 

 

配置 Default Cache Behavior Settings

Default Cache Behavior Settings,其实就是配置在默认情况下 CloudFront 的一些缓存条件

这里的默认情况即我们想要缓存加速的文件(有些目录需要另外加 Behavior 来排除,后文会说)

由于 wordpress 的一些特性,有一些设置需要变动

– Forward Headers(转发 header)需要将 host 添加进白名单设置

– Whitelist Cookies(Cookie 白名单)需要将 wordpress * 和 wp * 加入白名单

– Query String Forwarding and Caching 一些博主推荐设置为 Forward all, cache based on all,但是在奶冰这里测试的情况下如果选择 cache based on all 会导致基本上所有请求都不会缓存(抓包抓到的 HTTP 头里基本上都是 X-Cache:Miss from cloudfront),前期不推荐 cache based on all,后期像搜索功能如果出现了问题可以尝试开启

– (可选)Viewer Protocol Policy 中,如果站点是 HTTPS 站点可以设置 Redirect HTTP to HTTPS 以提高安全性

具体配置看图

 

 

配置 Distribution Settings 分发设置

有这么若干要配置的点

– Price Class 个人觉得不用配置也可以,不过你要是想省点钱的话就选择第二档(Use Only US, Canada, Europe and Asia)

– Alternate Domain Names (CNAMEs) 对于全局 CDN 来说这里要填的就是要加速的域名,我这里就是 milkice.me

– SSL certificate 由于要配置全站 CDN 所以第一个选项不可用(如果你能忍受那个红色的 SSL warning 也无所谓),一般都是选择 Custom SSL certificate,这里不管你有没有 ssl 证书你都可以在 Amazon Certificate Manager 签发 Amazon 证书用于分发服务器与终端之间的数据加密,点击 Request or Import a Certificate with ACM 签发证书后回来刷新一下就有你的证书了,应用即可

其他默认,看图即可

 

这时候就基本完成了,点击 Create Distribution,Amazon 即开始部署

 

后期附加操作

估计因为 CloudFront 在全球节点太多了吧

每次创建 / 修改设置之后重新配置花的时间挺长的大约 5-10 分钟,这时候可以慢慢等待或者配置进一步的 Behavior Settings

到 Behaviors,点击 Create Behavior

– Path Pattern 填写 /wp-admin,是不是很熟悉呢,对的没错,wordpress 默认管理界面,由于 wp-admin 一般都需要动态生成所以这时候不需要 CloudFront 服务器缓存,所以要创建一个 Behavior 以规避这种情况

– Path Pattern 填写 /wp-login.php,这是在根目录下的用于登陆的一个 php 文件,由于要 POST 登录数据所以这个文件也不需要缓存,需要特别设个规则

如图配置

 

(其实两个配置是一样的只要把 Path Pattern 的值改一下即可,wp-login.php 我就不发截图了)

 

最后好了应该是这样

 

接下来去 NS 服务商配置 CNAME 记录

 

将原来的记录删掉,再加个 CNAME 记录指向 CloudFront 给出的地址即可

 

然后就等全球 DNS 服务器更新缓存吧

 

(๑´ㅂ`๑)

后续一些使用感受

上了 CloudFront 之后速度的确快了一点,不过因为第一次访问的时候需要回源下载数据缓存,所以会比较慢

但是很恶心的一点是因为奶冰目前的 dns 不能根据地理位置分流,导致被分到的 CDN 边缘节点不是东亚节点而是全球节点,大大降低了访问速度

看了一些别的博主的解决方案是用 Amazon 的 Route 53 GeoDNS 功能实现准确分流,但是我又不想把 NS 服务器转到 Amazon 那里去(主要是全球 48 小时更新时间太恶心)

但是似乎可以指定子域名的 NS 服务器为 Route 53,暂时未测!

参考资料

http://www.xiongge.club/170.html

https://www.ze3kr.com/2017/01/wordpress-full-site-cdn/

https://594250.xyz/index.php/2020/09/08/cloudfrontwordpress%e5%ae%9e%e7%8e%b0%e5%85%a8%e7%ab%99cdn-%ef%bc%88%e8%bd%ac%e8%bd%bd%ef%bc%89/

人已赞赏
技术教程

王者荣耀英雄操作教程 王者小棉花全教程打包

2020-9-29 3:14:11

技术教程

利用应用转生和QN框架在QQ上发送卡片消息教程(假红包引流)

2020-9-30 2:24:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
加载耗时:2.010 网页查询:50