Cloudflare CDN、AWS Cloudfront都是全球知名、优秀的CDN产品,只是Cloudflare的“小黄云”打开、关闭操作及相关一系列免费产品过于诱人,导致其被国内用户无节制地使用,使得其由加速器变成了“减速器”。相比之下,AWS Cloudfront作为同级产品,其最为核心的加速体验原本不如Cloudflare,而且流量、请求数、边缘计算函数应用等均有限制,可怜的xxG/m出口流量直接悲剧。早在2021年底,Amazon即对其AWS Cloudfront产品进行了优化,至2023年,在Cloudflare CDN不开优选即“减速”的局面下,国内用户开始将目光再度投降Cloudfront。Cloudfront相比Cloudflare CDN而言,其实功能上一点不差,但并非无限量免费,同时配置上相对操作麻烦一点。
从部署实践总结来看,配置选项丰富、默认无法直接上线、优先适配自家产品是将相当一部分潜在用户拒之门外的主要原因。Cloudflare目前的应用状况下,还有一堆人鼓吹原地起飞、全平台解锁云云,老E实在想吐。不想再优选IP去折腾Cloudflare了,上个Cloudfront吧,至少短期内还可用、还没被搞滥。当然,我相信也不会被用滥,就光是1T/月的出口流量限制,不是无限,“大神”们看不上,没得忽悠。
1.现状
手上一台“弱鸡”vps,连通性不错,缺点就是延迟很高,很早用Cloudflare套下还可以,22年开始就彻底不灵了。网站测试平均响应响应时间都在1s出头。目标不大,能进军100ms级别就行。
2.Cloudfront产品政策
前面说了流量限制,永久免费套餐包含的内容包括:
-
- 每月 1 TB 传出数据
- 每月 10000000 个 HTTP 或 HTTPS 请求
- 每月 200 万次 CloudFront 函数调用
- 免费 SSL 证书
- 无限制,所有功能均可用
所谓被反撸,发端于早期EC2的12个月免费产品,一堆中小主机商针对AWS、Azure的销售话术罢了。不超不会收费,全球大厂不行地区作坊行?
3.部署--创建分发/配
没有账户创建账户。
登陆AWS控制台后,组件中如果没有Cloudfront,在上面的search栏搜索就可以搜索出来并添加到组件面板。
创建分发/配的过程中,Cloudfront无法实现全部默认即可开启,同时Cloudfront的配置选项也很丰富,其可配置程度、功能上绝不逊色于Cloudflare,部分方面甚至是有所超越的。结合对网站加速功能的规划,创建过程中还是有3个方面需要编辑自定义的:
首先,当然源域指定。需要指定加速站点的域名,一级、二级甚至三级均可,匹配自身的站点加速规划,还可更精细地设定网站路径。
第二,查看器选择“HTTP and HTTPS”的基础上,选择所有的HTTP方法。其实在创建完成之后都有相应的编辑入口,建议在创建阶段完成自定义,可以创建自己相应的策略并选择应用。
第三,缓存策略徐需要选择一项,所有未标注“可选”的都需要设定。大部分选项AWS控制台都设置有默认值,这一项控制台没有设默认值,需要自定义。
最后提一点也很重要:WAF防火墙不要启用(点选“不启用”)。页面没有明确提示,点开“信息”会获知价格,还可以结合预估值进行预计算,1000万次、1000次分别是14美元、8美元。
其他各项保持默认值,创建分配。
4.备用域名指定与证书导入
分发/配创建完成后,AWS会快速根据分发策略(默认Gloabal)进行部署,部署成功后会为我们的加速站点分配二级域名。
在设置栏,点选“编辑”即可打开编辑页面,对备用域名、证书等进行操作。备用域名无需多言,最好提前进行适当的规划,不能和源域相同(CF代理源域、再访问源域,这个逻辑本身就错乱),用户一般都会在NS上增加一条CNAME记录指向Cloudfront分配的二级域名,其内容就是这里的备用域名。备用域名可以随时修改、添加。
在自定义SSL证书这里,不要手残点上启用了旧式支持。没有请求成功或者导入成功证书的,可选列表为空。点击“请求证书”(或者在控制台首页搜索ACM,AWS Certificate Management)。TLS版本上默认的即可,新站不用过多考虑向下兼容的事,老E实在想不出来还有什么客户端或者服务器仅支持TLS 1.0,上古的还是换了吧。
在ACM控制台,列出、请求、导入3项选择,非常清晰、简单。这里强调一下,不建议请求、不建议请求、不建议请求。
建议在ACM页面直接选择“导入证书”,没有证书的实在不行可以用acme.sh申请,比在ACM请求简便得多。要在ACM请求证书,需要将域名泊靠在Router53或者开通企业邮局并配置好webmaster、admin等站长管理邮箱,因为ACM需要进行DNS验证或者邮件验证,二者选一。即便验证通过,我们也无法直接在ACM下载证书,还需要二次验证,从指定的Google链接下载。所以,建议导入证书,即便通过acme.sh新创建也是相对简便的。
另有一点老E需要特别强调,导入的证书需要包含对备用域名的身份鉴别信息,以acme.sh申请的为例,通过 -d 参数指定的域名应包括备用域名,理论上应该是个多域名证书。使用acme.sh申请证书的命令可以/能是这样的: "acme.sh .... -d 备用域名 -d 主域名 -d 其他域名"。
导入证书实际上就是拷贝、粘贴,公钥、私钥、证书链(fullchain),公钥作为可选项,最好也拷贝过来。正式开通的站点,可能私钥、证书链在一个目录下(acme.sh都是同一下载在一个目录下管理的),公钥在另外的目录不好找,其实无所谓,公钥就是随时分发的。可以直接https访问待加速站点,可以直接导出。以bing.com为例,打开网站-->地址栏最左侧小锁图标-->连接安全-->证书图标-->导出。
点击地址栏最左侧小锁图标,选择连接安全。
点选第一项连接安全,注意左上角的证书图标。
点击证书图标,在打开的对话框中即可到处证书文件(公钥)。
证书导入完成后,就可以在配置编辑界面进行选择了。选择证书,开启HTTPS访问加速,这样保存更改即完成了Cloudfront CDN的所有基础配置。更为丰富、细化的配置可在日后运行过程中逐步调整。NS上CNAME记录的添加不做文字说明。
5.结语
整体部署实践相比其他CDN并不复杂多少,AWS的功能非常强大、丰富,添加完CNAME后做了测试(任何CDN的分发缓存、DNS记录解析都需要时间,所以直接用分配的二级域名),平均响应来到500ms左右,默认情况下还是满意的。对于Cloudfront和Cloudflare的配合,可以这样操作,老E已经实践了的:
-
- conf 1 主域名(@)由Cloudflare解析,安全策略为严格(完全)、开启代理
- conf 2 主域名由Cloudfront进行缓存加速,修改加速区域为亚太
- conf 3 备用域名(如blog)指向Cloudfront分配的二级域名
查阅官方文档会了解到AWS Cloudfront API一样运用灵活、功能强大,支持、内容上甚至比Cloudflare还要丰富、细致,对于老E这样的普通用户而言,太细了,很多根本用不上。
更新:老E撤除了Cloudflare的加速,主要是国内访问,24小时都没有坚持下来,卡。
文章评论