目标
去年双十一买了腾讯云CDN境内流量包,1块钱100G(大家可以看看今年双十一有没有优惠),才发现快到期了,就把本博客部署一下CDN吧。
但是这个包只抵扣境内流量,如果有境外浏览流量或者不法分子用境外服务器刷我网站流量,那岂不是费房子!
如果能实现境内使用腾讯云的CDN,境外使用CF就完美了。
大致步骤
这里国内CDN服务商以腾讯云CDN为例,百度、阿里等都是相似的
1.腾讯云CDN正常配置CNAME。
2.CF通过自定义主机名(SaaS)+中转域名实现CDN功能,拿到CNAME。
3.在DNSPod中分别创建默认+境内两条解析记录,默认给CF,境内给腾讯CDN。
默认给CF是为了防止因IP属地识别出错,导致腾讯云CDN跑境外流量造成欠费。
详细步骤
假设源站IP为:1.1.1.1,域名为:1.com,CF中转用域名(需要绑到CF)为:2.com
腾讯CDN
这个跳过,正常配置CDN即可。
CloudFlare
验证信用卡(国内银联信用卡也可以,记得存7块钱进去,会扣掉然后又退款实现认证)开通 Cloudflare for SaaS 服务。
开通即可,100个自定义域名免费额度,不愧是良心云!!!
先上一个大致原理图
境外客户端访问1.com
-> DNSPod一看非境内IP,返回默认记录(CNAME 1.com cdn.2.com)
-> 继续执行DNS查询,查到(A cdn.2.com [CF的泛播IP])
-> 境外客户端带着cdn.2.com的SNI访问返回的[CF的泛播IP]
-> CF收到请求,查到SNI==某自定义主机名,根据该自定义主机名设置的回退源(cdn.2.com)的IP(1.1.1.1),给这个IP发送请求。
简而言之:
CF设置的cdn.2.com等价于腾讯CDN给的CNAME域名。
CF绑定的2.com设置的IP等价于腾讯CDN设置里的源站地址
设置中转域名,开启小黄云
绑定一个域名到CF,作为中转。
像.top等就好,免费域名.ml都行,只要能绑到CF。
设置一条A记录:
主机名随便设置,反正不是公开给人看的,长点也没关系,当然用@也可以,记得把小黄云打开。
记录类型 | 主机名 | 代理 | 其他 |
---|---|---|---|
A | cdn | 1.1.1.1 | 默认 |
设置自定义主机名
如图,进入设置项,先添加回退源(中转域名cdn.2.com)
设置自定义主机名(准备添加CDN的域名1.com)
点击“添加自定义主机名”,进入添加页面,自定义主机名框里填写真正想要接入的域名,其他设置保持默认。
添加完自定义主机名后,要根据提示到DNSPod里给目标域名添加对应的TXT记录,验证域名所有权。
也就是到1.com添加TXT记录
另外注意:DNSPod设置解析时可能会出现如下提示 选第一个
DNSPod设置分区域解析
给1.com添加两条解析
记录类型 | 主机名 | 记录值 | 线路 |
---|---|---|---|
CNAME | @或者www | cdn.2.com | 默认 |
CNAME | @或者www | 腾讯云CDN给的CNAME | 境内 |
等待生效
大约五分钟就生效了
随机打开一个全球网站在线ping网页,我这里选择ping检测-ping测试-ping值-在线ping检测-ping工具-拨测|免费的域名检测工具网-站长工具
总结
Cloudflare for SaaS是官方提供的一项非常方便的免费功能,弥补了早期未通过Partner接入只能强制NS接入的缺憾。有官方保障、灵活CNAME、免费的优点。配合DNS分区解析,可以做到国内腾讯云CDN+国外CloudFlare强大效果!!!
参考资料:

感谢分享不错
添加了两个txt之后和对应 的cname,但证书验证一直处于待验证,请问可能是什么原因?
1.txt记录头、内容填错了
2.记录没生效
暂时不搞了,找不见原因 衰~~
证书状态好了。不知道为什么,在tencent控制台域名解析里加的txt证书状态验证不好用。到DNSPOD里加,立马就OK了……^^
因为腾讯云那个界面默认会自动加上域名后缀,比如你添加xxx.xx的dns,他默认会变成xxx.xx.你的域名
显示—回退源状态:(错误)—咋搞
可以描述详细一点吗
是我解析的问题,已经好了,谢谢博主的分享,好人一生平安
真个真的牛逼,教程很多, 就这个最详细,功能解释的也清楚
分开解析能防止很多恶意攻击,也能省好多小钱钱,真的舒服