没想到,终有一日我也能发个技术贴了,感谢各类收费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免费啊不限流啊安全啊,这些都不说了,快给我点个赞,需要的赶紧拿走~
够详细,哪天有空了我也倒腾倒腾。
试了一下,莫名被卡在了第七步,一直处于待验证状态。
哪一步?我给你瞅瞅
测试了一下,是cname解析到回源域名失败。应该是dnspod的问题
啥意思,dnspod国外IP判断错误?
还能这么玩?这不是一举解决了腾讯云国外访问慢的毛病?
嗯呢,我是不是很厉害~哈哈哈哈 测试可用哈
详细,这一技就免费到手了!
贼好用的
域名多就是好呀,我就一个。又拍云联盟送一年CDN流量,要不你也试试 https://www.upyun.com/league ,我刚入半个月差不多。
当时我也注册了个又拍云想试试,但是具体遇到什么问题,后来放弃了。。。 不记得了
他只需要设置个CNAME,提交当前站点的证书,这两样就行,挺快的。
还有一点,我的源站是个静态站点,所以CDN利用率比较高
对,适合的就是最好的~现在免费SSL证书只有3个月,有点麻烦
确实讨厌。就如同我三个月要交一次的停车费,
好像目前能做分地区的只有dnspod和CloudFlare吧。
cloudflare 里的解析好像不好分区吧。。。不然我就直接用CF的NS了,然后解析一条国内IP到腾讯云的CDN更加方便。。。
上个月的时候,我忘记哪位博主说的了,他说他网站用的cloudflare就是因为相中了分地区解析。
我是没找到这功能,如谁知道能分地区解析,教我下哈
很不错 写的步骤非常详细 直接一步步上手到位
感谢大佬龙的审定,TLS最低版本建议选择1.1