同时使用腾讯cdn与cloudflare CDN服务
2018年11月26日
对于同时提供中英文服务的网站来说,如何兼顾国内访问速度和国外访问速度显得非常重要。腾讯的对象存储是面向非结构化数据,支持 HTTP/HTTPS 协议访问的分布式存储服务,它能容纳海量数据并保证用户对带宽和容量扩充无感知,可以作为我们网站的静态文件存储地。当我们在
https://cloud.tencent.com/product/cos 申请免费的cos空间后,同时就可以免费开通cdn服务,同时获赠免费的50G cdn流量,然后只需要添加备案后的网站就可以了。而cloudflare是世界上最大的免费CDN提供商,同时提供了免费的https服务,提供无限DDOS等各种防护等等好处,谁用谁知道。CF(cloudflare)对于国外的网站来说是非常完美的,但是国内的话免费方案速度不是很快,被很多人誉为减速CDN,那么我们可不可以在国内使用免费的腾讯CDN,同时对于国外用户使用CF的免费CDN服务呢?答案是肯定的。
目前同时使用国内CDN和CF有两种方案,这种方案的核心是使用阿里云的智能云解析,我这里是阿里云域名服务器dns3.hichina.com,dns4.hichina.com,智能云解析允许针对不同的ip来源匹配不同的服务地址,可以指定不同NS服务器,不同ip,不同cname,真的是太棒了。所以要同时使用国内CDN和CF CDN的话需要使用阿里云注册域名(没有试过在国外注册转移到阿里云域名控制台)。
由于国内网站服务必须备案,因此网站域名必须备案,不然的话国内的CDN上面是无法添加的。下面正式介绍如何同时使用国内CDN和CF cdn来提高网站的访问速度,保护网站吧。
方案1:国内IP cname解析到腾讯CDN上,国外IP使用CF的ns服务器
如上图,在阿里云控制台找到域名,选择要修改的域名,我这里是bobobk.com,下拉列表中找到DNS修改,确认后会有手机验证,验证通过后就修改好了。然后在cloudflare上面添加自己要使用双CDN的网站,然后cf会确认ns设置是否正确,正确后就可以在DNS上面设置好解析了(如果原来有解析的话直接在cf上设置就好了,上面会显示历史解析地址),这里当然要记得确认status显示是橙色的,说明启用了CDN,不然就直接暴露源站了,当然CF默认是使用的。
第二步:ns服务器更改为阿里云的ns服务器(dns3.hichina.com,dns4.hichina.com)。
修改方法同上。关键部分来了,在域名控制台点击bobobk.com右边的解析,进入到如下界面
![jiexi.webp jiexi.webp](https://www.qcyqq.com/wp-content/uploads/2024/06/jiexi.webp.jpg)
这里我们需要设置境外ns记录值为CF的服务器地址,cname设置为腾讯云cdn的cname地址,这样国内IP访问就是通过腾讯CDN,而国外ip访问就是CF的全球加速节点。
看下设置好国内国外CDN后的速度![speed.webp speed.webp](https://www.qcyqq.com/wp-content/uploads/2024/06/speed.webp.jpg)
可以看到无论是国内还是国外速度都是非常的快,到此第一种方法介绍结束。
方案2:国内IP cname解析到腾讯CDN上,国外IP cname解析到cloudflare CDN上
第一步:成为cloudflare parter
这种方法需要能够获得cloudflare的cname解析方式,对于个人来说就是需要申请个cloudflare的合作伙伴的方式才能够获得的。进入到cf合作伙伴申请页面https://www.cloudflare.com/partners/
,然后google一下或者百度一下就可以看到大量的相关教程了,这里就不详细介绍了。
第二步:根据ip设置不同的cname记录
在以CF合作者身份申请到cname之后,同样进入到智能云解析设置
![parter.webp parter.webp](https://www.qcyqq.com/wp-content/uploads/2024/06/parter.webp.jpg)
设置好国外的cname解析为CF 的cname,默认为腾讯的CDN,到此大功告成了。
本教程在于如何同时使用国内CDN和国外CLOUDFLARE cdn来进行全球加速,目前本人使用的是第一种加速方式,目前也在申请cloudflare的合作者身份,后续如果有想要使用CF cname解析的我也可以给你们设置。
近期笔者想将手上的一个网站进行速度优化,最先想到的方法是动静分离,即将图片等静态文件使用CDN网络进行加速。由于网站针对的是全球的用户,CDN服务需要同时兼顾国内与国外,这一点必须要在我的考量范围内。目前提供CDN服务的商家很多,例如国内的七牛云、Ucloud、阿里云、腾讯云等,国外的Cloudflare。
其中Cloudflare是世界上最大的免费CDN提供商,同时提供了免费的https服务和无限DDOS等各种防护功能,对于国外加速效果显著。但是免费版本不提供国内CDN服务器,对国内加速效果并不理想,甚至会拖慢网站加载速度。
而国内CDN提供商方面,腾讯云提供每月10GB的免费CDN加速,首次使用的用户还能获赠连续6个月的50GB CDN流量,额外购买的流量包也相对来说比较便宜,对于普通站长来说用它再适合不过了。但国内的CDN服务商通常会将国内CDN和海外CDN分开进行计费,而且绝大数商家的海外CDN开通还需要一定的量才能申请,并且海外的费用高出国内的不少,因此对于海外流量方面并不划算。
那么如果我能实现国内用户访问的是国内的腾讯云CDN网络,而海外用户访问的是Cloudflare的CDN网络,岂不美哉?经过笔者网上查阅相关资料,终于找到了二者共用的解决方案。
第一步:修改NS服务器为 Cloudflare 提供的 并启用 Cloudflare CDN加速
由于默认情况下Cloudflare无法直接获取CDN服务器的CNAME解析,只支持修改NS服务器为cloudflare的NS服务器从而设定DNS与加速选项,我们只能先修改NS服务器为cloudflare。
登录Cloudflare注册账号,将需要加速的域名填入,cloudflare会提供DNS导入步骤和NS服务器修改方法,按照指引修改即可,这里不再多赘述。
等待Cloudflare NS校验通过后我们便可以设置DNS了。
![006RKGBpgy1gqaxg10a50j30s8086jrp 006RKGBpgy1gqaxg10a50j30s8086jrp](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg10a50j30s8086jrp.jpg)
因为笔者不喜欢将CDN直接套在主域名上(因为今后可以选择在腾讯云上启用COS+CDN方案),所以我另外开了一个二级域名来作为静态文件域名,就是这里的 cloud.example.com 。
由于cloudflare的CDN只能将加速的 cloud.example.com 回源至它本身,无法回源到其他域名上(www.example.com),因此我在服务器上添加了一个反向代理,用 cloud.example.com 来代理我的主域名 www.example.com 。当然如果你不想那么麻烦,那么就将CDN直接套主域名上,加速 www.example.com 即可,大家可以通过自己的实际需要相应修改。
将橘黄色的云朵点亮以启用CDN服务,接下来cloudflare会花费大约5-10分钟进行CDN部署和ssl证书签发。
稍等片刻后使用ping工具进行DNS查看,如果发现已经指向Cloudflare服务器即已经部署成功。
![006RKGBpgy1gqaxg0zm2yj30s80ext98 006RKGBpgy1gqaxg0zm2yj30s80ext98](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg0zm2yj30s80ext98.jpg)
第二步:创建并设置腾讯云 CDN
这一步需要激活腾讯云的CDN并创建一个CDN加速域名。例如我需要加速的是我的静态文件二级域名 cloud.example.com ,回源选项里设置为回源 www.example.com ,有条件的还可以启用COS对象存储 + CDN网络分发的方案。如果你是直接套主域名上的,那么就直接回源 www.example.com 即可。大家根据自己实际情况做相应修改。
![006RKGBpgy1gqaxg1129dj317205o3yo 006RKGBpgy1gqaxg1129dj317205o3yo](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg1129dj317205o3yo.jpg)
![006RKGBpgy1gqaxg15o3yj311t0940te 006RKGBpgy1gqaxg15o3yj311t0940te](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg15o3yj311t0940te.jpg)
到此,腾讯云的CDN创建完毕,我们需要在域名管理列表里找到这个域名的加速域名CNMAE解析并记录下来。
第三步:将NS服务器切回腾讯云云解析 并设置海外线路使用cloudflare NS服务器解析
这里用到了腾讯云dnspod提供的多线路解析功能,我们将ns服务器从Cloudflare切回腾讯云。如果你的域名存放在阿里云的万网或者百度云等也没关系,他们都提供了类似的多线路解析,使用他们的ns服务器来设置DNS也行。如果你的域名托管商不提供多线路解析,那么可以到腾讯云去添加免费的云解析并将ns服务器切换到腾讯云。
![006RKGBpgy1gqaxg15o2aj30u50emadf 006RKGBpgy1gqaxg15o2aj30u50emadf](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg15o2aj30u50emadf.jpg)
添加加速域名解析,例如我这里 cloud.example.com ,默认解析到腾讯云的CDN,用于国内加速,记录类型为CNAME,填入刚才获取到的加速域名的CNAME。
再添加一条域名解析 cloud.example.com 境外线路,用于海外加速,记录类型为NS,填入cloudflare的NS服务器地址,这个地址可以在cloudflare控制面板里找到。
到此,大功告成!由于NS服务器切换后生效需要一段时间,通常在48小时后才能完全刷新。设置好后还不能立即看出效果,我们需要耐心等待。
加速效果
![006RKGBpgy1gqaxg14gy7j30vo0o5mzy 006RKGBpgy1gqaxg14gy7j30vo0o5mzy](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg14gy7j30vo0o5mzy.jpg)
![006RKGBpgy1gqaxg16i20j30pv0godgc 006RKGBpgy1gqaxg16i20j30pv0godgc](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg16i20j30pv0godgc.jpg)
可以看到国内IP都会走国内的腾讯云节点,而海外则走cloudflare,网站延迟基本控制在了30ms以内。
写在最后
这个方法有一个缺点,就是cloudflare大约每5天就会检查一次你的域名ns服务器是否指向自己,如果不是就会在7天后删除CDN加速。因此我们需要每过10天左右就需要修改一次ns服务器以应付cloudflare的检查。
加入 CloudFlare Partner (补充方法)
以上方法基本每半个月就要修改一次NS指向以防止cloudflare NS验证过期,时间久了很容易忘记更换而导致加速被删除。唯一的解决方法就是使用CNAME解析,但必须加入CloudFlare Partner。笔者曾经尝试向Cloudflare申请加入Partner计划,但被邮件告知必须是 business 或 enterprise 计划才有资格申请,而这两个计划价格并不便宜,因此放弃。近期笔者偶然间看到萌精灵大佬提供免费的 Cloudflare Partner 托管,于是赶紧尝试了一下。
萌精灵CDN面板:https://cdn.moeelf.com/
首先进入萌精灵CDN面板,使用自己的CloudFlare账户登录。可以看到看到我们在cloudflare上注册的域名均被列出。然后我们点击添加域名,添加自己需要加速的域名。这里注意如果之前你已经将域名添加到了cloudflare列表里,请先在cloudflare官网将其删除,否则无法完成添加到 萌精灵CDN 并完成绑定。
![006RKGBpgy1gqaxg1746gj30pv0godgc 006RKGBpgy1gqaxg1746gj30pv0godgc](https://www.qcyqq.com/wp-content/uploads/2024/06/006RKGBpgy1gqaxg1746gj30pv0godgc.jpg)
添加域名后再添加DNS解析记录,获取到CNAME解析地址。再返回云解析,同NS分线路解析一样,这里我们选择海外CNAME解析,将刚刚获取到的CNAME地址填入即可。由于是CNAME接入,我们就不必担心cloudflare检测过期问题了。
最后再次感谢萌精灵大佬免费提供的cloudflare和CDN面板。