没想到,终有一日我也能发个技术贴了,感谢各类收费CDN和WAF的大力支持和不断督促,让我能够绞尽脑汁,研究出一个讨巧的方案,现分享给大家。

起因:

博客换了一个缓存优化插件,国外的,其中有一项图片优化功能,需要和国外的服务器联通才可以使用,以前都是简单粗暴的直接禁止国外IP访问网站,一来相对安全些,二来不浪费我大腾讯云的CDN流量,按量收费后好像有人被刷爆过账单,有点怕怕。但是放弃图片优化功能,又心有不甘,所以近期一直在纠结这个问题。

经过:

偶然看到dnspod里域名解析,可以细化到境内和全球之分,让我灵感一现,是不是可以把国内访问的IP解析到腾讯云的CDN,而国外访问的IP解析到另一个单独的CDN里,既不影响国内访问速度,又可以避免流量浪费,还能确保与图片优化服务器的联通。

那问题来了,现在需要找一个免费+好用的CDN来做国外IP解析的通道,这个问题折磨了我许久,也尝试了不少CDN,第一个想起的就是CloudFlare,发现必须做NS才能使用无奈放弃,然后又尝试了Amazon CloudFront、又拍云、云盾、加速乐等CDN,这些CDN可以用4个字来评价:欺世盗名、全是垃圾、一无是处、浪费时间!!!看来看去还是中意CloudFlare,又简单又没啥限制,可是怎么用呢??万事不决问百度吧,万能的百度竟然真帮我解决的这个问题:CloudFlare SAAS(cname) 接入网站域名 ,此文讲解了如何用cname方式使用CloudFlare的办法。

1、准备一个CF账号和两个域名:一个不常用的域名,比如 a.com ,和一个你想用cname接入CF的使用的域名,比如 1.com。啰嗦下,a.com是不用的域名,而1.com是你网站正式使用的域名,别弄混了。先将域名 a.com 通过NS方式接入接入CF中。

2、进入 a.com 这个域名,打开左侧导航栏的 SSL/TLS 一栏,点击”自定义主机名“。

3、开通 Cloudflare for SaaS 功能,此功能100个网站内是免费的所以放心用没问题,但是需要绑定visa信用卡或者PayPal,我是绑定的PayPal,反正里面没钱,安全的很哈哈哈。

4、回到 a.com 域名的 dns解析记录里,随便添加一个解析,比如 1.a.com,IP地址要写你网站(1.com)的服务器IP,我们将 1.a.com 作为回退源网址。

5、再来到自定义主机名里面,填写刚才的回退源网址(1.a.com),并保存,等待生效。

6、回退源网址显示“有效”后,下面添加自定义主机名。这里的自定义主机,就是你网站正式的域名,开头我假设的网址是 1.com ,最低TLS版本建议选择1.1(大佬龙审定后建议的),然后点右下角的“添加自定义主机名”即可。

7、这时候需要验证刚才我们写的自定义主机名(1.com)了,返回 dnspod 里面去解析 1.com 的txt验证记录(再啰嗦下,a.com我们的NS是放在CF里,但是 1.com 这个我们正式使用的网站域名,还是用的 dnspod 的NS ,并且在dnspod里解析)。

8、上图中,有2个txt名称,第一个是 1.com,第二个是 _cf-xxxxxxxxx.1.com,都有对应的txt值。

我们在dnspod中解析时,第一个主机记录填写 @ 即可,后面填写 ca3-xxxxxxxxx 那串txt值。

第二个主机记录填写 _cf-xxxxxxxxxxx ,结尾的 .1.com 就不用填写进去,后面同样填写 b8b7841c-xxxxxxxx 那串txt值。

完成后就等待生效即可,一般也就几分钟,如下图所示。

9、这样我们就完成了CF中所有的设置,回顾一下:
①准备了2个域名,其中 a.com 是不用的,需要NS方式接入CF;
②开通了Cloudflare for SaaS ,需要绑定一张国际信用卡或者PayPal,推荐使用PayPal;
③设置回退源网址(1.a.com),对应的IP为你使用服务器的真实IP;
④设置自定义主机名(1.com),此网址(1.com)就是你真实使用的网址;
⑤在dnspod上,解析 1.com 需要验证的2个txt记录,等待生效;

10、最后一步,如何把我们真正使用的域名1.com,用cname方式接入CF?做完以上CF平台的所有操作后,会最终得到一个 “权威DNS”的cname记录,如下图:

进入 dnspod 平台,先将这个cname记录做好,主机记录填写“_acme-challenge” 。记录值填写 <hostname>.xxxxxx.cloudflare.com 就是上图中后面部分的内容,其中 <hostname> 就是你的域名(下划线红色部分),我们假设的是 1.com,所以填写如下图:

最后再做一个cname记录,主机记录用 @,也就是让访问 1.com 网站时生效使用,线路选境外也就是直接国外IP访问网站时走这条解析,记录值填 1.a.com (就是我们设置的回退源网址,这也是为什么设置回退源网址时,对应的IP必须是我们真实服务器的IP原因)。

结果:

所有的操作就全部搞定,看看效果如何:

国内IP访问时—-先经过dnspod判断,是国内的IP—-走国内的cname记录—-到腾讯云的CDN—-到你的服务器网站。

国外IP访问时—-先经过dnspod判断,是国外的IP—-走国外的cname记录—-到CloudFlare的CDN—-到你的服务器网站。

清清楚楚、明明白白、各取所需、速度贼快,你想想,国内走腾讯云速度可以保证,国外走CF速度又可以提高~关键CF免费啊不限流啊安全啊,这些都不说了,快给我点个赞,需要的赶紧拿走~