之前是使用 github pages 作为源站,cloudfront 貌似没有成功缓存,所以改为部署到 s3 存储桶了

初衷是给博客套上 CDN,因为原先直接访问 github pages 的速度比校慢。

CDN 首先想到的是 cloudflare,业界标杆,提供了免费的 cdn 服务。但是 cloudflare 在国内表现并不好,有的同学用了之后反而更慢了,只能排除。之后把目光投向国内大厂,毕竟是为了加速嘛,国内服务器效果肯定是最好的,但是国内的服务都要求域名备案,只好放弃。最后用了 aws 的cloudfront。
cloudfront 是按量计费的,计费规则如下,价格非常便宜。同时 aws 1 年免费试用也包含了 1T 的 cloudfront 传出流量。
其实用了之后才知道两个 cf 的网络质量半斤八两

Pricing

hexo 部署到 s3 存储桶

s3 存储桶配置

新建一个 s3 存储桶,然后按照 aws 的文档将存储桶配置为静态网站。配置完后存储桶将会变为公开可访问

然后为存储桶开启 ACL,这是为了之后使用 hexo 部署插件

hexo-deployer-aws-s3 插件

这个插件为 hexo 添加到部署到 s3 的功能,项目地址:https://github.com/gjbkz/hexo-deployer-aws-s3

按照插件的文档安装配置,prefix 设置为空(即直接上传到 s3 根目录)。参考 aws 文档配置凭证。建议在 aws 的访问管理那里单独开一个用户,给它 s3 的权限,使用这个用户的 Access Key。

记得在 config.yml 里注释掉之前的 deploy 方式!

插件配置完,hexo d 应该可以正常部署了。注意存储桶要开启 ACL 否则会上传失败。

配置 cloudfront

aws 面板里进入 cloudfront ,创建一个 Distribution。设置项有很多,不过只需要设置几个地方就够了,其余选项保持默认就好。

Origin domain:静态源站地址,输入 s3 存储桶的静态网站设置那里的网址,并去掉前面的 http://

源站地址设置

Name: 该 origin 的名字,随便填写

Origin Shield 可以开启,效果应该会好一点(需要付费,不过很便宜)

Origin Shield

然后设置把 HTTP 重定向至 HTTPS:

重定向设置

缓存策略:这里按情况设置。cloudfront 默认是缓存 24 个小时。对于静态网站这个时间太长了,选择 Legacy cache settings > Object caching > Customize 更改 Default TTL,单位为秒,比如设置成 7200 就代表两小时刷新一次

更改缓存有效期

继续往下,来到 Settings 页

Price class:付费等级,选择启用哪些节点,价格有差异,因为 cloudfront 收费很便宜,没有特殊需求的话选择使用全部节点就好(默认)

重点来了,Alternate domain name (CNAME):替代访问域名,填网站的地址,使用这个地址访问将经过 CDN 加速。

Alternate domain

Custom SSL certificate:自定义 SSL 证书。AWS 提供免费的公共 SSL 证书,推荐使用,点击下面的 Request certificate 跳转到证书申请页面,只需验证域名的所有权就行了,建议用 CNAME 验证,以后证书到期时 AWS 会自动检查 CNAME 记录并续期。不过 AWS 的公共证书不提供下载,只能给 AWS 的云服务用。

选择 SSL 证书

其余设置保持默认就行了,检查完了之后点击 Create distribution 完成设置,之后会开始部署。

部署时间比较长,注意如果更改了设置要重新部署,所以以后改设置 save 之前最好检查一遍…

分发域名

Distribution domain name 就是 CDN 访问地址,在 DNS 服务商那里把之前填的 Alternate domain name 设置 CNAME 解析到这个域名,等待 cloudfront 部署完成,访问网站就可以享受 CDN 加速了!