作为一个普通的IT Guy,我不禁时常怀疑,为何别人的飞机场要比自己搭建的小飞机速度快那么多呢?难道飞机场主都是究极土豪,人均CN2 GIA线路?直到我在90Sec看到一篇内务帖…
现有90论坛处于CloudFlare CDN默认加速防护下,众所周知的原因,CloudFlareCDN对于国内用户,很多时候不仅不会加速,还会增加延迟。
@c0bra大佬提出:在接入CDN后,可以接入CloudFlare Partner平台,再通过智能DNS解析,设置CloudFlare自选IP,以达到加速目的。
这是我第一次接入到CloudFlare自选IP
这个概念,看完大佬说的步骤也甚是迷惑,在经过各种Google和Baidu,终于产生了该文章。
1.为何国内用户直接使用CloudFlare(CF)CDN加速效果不理想?
CDN优点非常多,包括加速网站访问,减轻源站压力,隐藏真实IP等。CloudFlare因其优质免费的服务,吸引了大量国内用户,几年前我第一次知道该平台时,兴冲冲的将博客域名托管到了CloudFlare下,然而仅仅过了半年,网站就时常无法访问,我使用真实IP直接访问也比走CDN速度快,我便对该服务的好坏产生了怀疑,我们来看看CloudFlareCDN是如何实现加速的。
CloudFlare官网默认不提供CNAME和A记录接入CDN的方式,而免费的套餐CDN节点很有限,有限的节点中很多对于国内用户也不是很友好,随机分配节点因此也成了网站间歇性故障的主要原因。
2.CloudFlare CDN自选IP是如何实现加速的?
既然随机分配的节点无法保证可用率,那么我们是否可以自己选择速度快的节点进行接入呢?
免费套餐下,在官网是无法实现该功能了,但是我们可以利用智能DNS+CloudFlare Partner平台来实现通过CNAME和A记录接入CloudFlare,以实现自选IP的目的。
3.学会自选IP加速我们能做什么?
- 小飞机加速
- 网站提速
- 真实IP被Q使用CDN访问
- ..各种需要CDN的场景
3.1 小飞机加速手把手教程
3.1.1 寻找CDN高速IP节点
首先,我们需要知道如何找高速节点,这里我们推荐一款找高速IP的利器,CloudFlareScanner,我个人的做法是在家里和公司分别运行该扫描,找到不同网络运营商下载速度较快的IP,该方法比较笨,但是十分有效。
聪明些的方法是什么呢?我这里想到可以在家里NAS上设置定时任务,定期扫描高速IP节点,通过Dnspod的接口自动设置高速IP。
在https://github.com/Spedoske/CloudflareScanner/releases/
根据系统版本,直接下载编译好的程序。我这里是Mac于是下载CloudflareScanner_v1.1.2_MacOS_x64.tar.gz
1 | #增加执行权限 |
该软件每次下载的节点不一定存在访问速度快的IP,因此多运行几次效果更佳。最终会在程序目录下生成result.csv,我们按照下载速度进行排序,就得到当前网络下的高速节点的IP了。如下图所示,本次检索到的IP为:104.18.151.135
如果有多个IP下载速度差别不大,尽量选择PING延迟低的IP。
3.1.2 选择智能DNS服务商
选择智能DNS的原因是其可以针对不同运营商线路分别进行解析,实现不同运营商下自选IP。
这里我选择的是Dnspod平台进行接入,在域名注册商里设置域名NS为以下两条记录:
1 | lilith.dnspod.net |
3.1.3 CloudFlarePartner平台接入
个人认为CloudFlarePartner目前认证体系设计的并不恰当,需要使用自己的CF账号密码去登录第三方平台,很容易产生密码泄漏风险。我首先填写了一份CloudFlarePartner申请,如果通过申请,就可以自己搭建平台了。申请的周期比较长,为了尝鲜我暂时修改CF密码为临时密码,使用第三方平台(如萌精灵)进行接入。使用第三方平台,务必小心自己账号密码安全
使用CF账号密码登录
=>添加域名
=>DNS管理
=>添加新记录
这里添加一个A记录,直接输入你的域名 例如dmz.mytool.cc
,A 记录填写你服务器的真实IP。
3.1.4 智能DNS解析配置
回到Dnspod,添加一条CNAME解析记录,dmz.mytool.cc
解析到dmz.mytool.cc.cdn.cloudflare.net
。
再添加一条A记录,并且选择线路为境内
或者你当前网络的运营商名称
,dmz.mytool.cc
解析到步骤1找到的高速IP104.18.151.135
最终配置如图:
至此完成了对源站HTTP请求的加速,如果只是为网站加速,到此就可以了。后面内容为小飞机加速。
3.1.5 小飞机反向代理及SSL配置
在之前,我使用的是v2一键环境,使用的是WebSocket动态端口协议,我们在配置完成CDN后,还需要部署反向代理,以便正常解析协议,后续采用WebSocket+TLS协议。
首先给我们的域名配置SSL。
1 | 这里使用acme脚本来申请Let's Encrypt证书 |
接下来是Nginx配置。
1 | server{ |
除了SSL配置外,解释几个关键的配置作用:
- location ./well-known:Let’s Encrypt申请证书时,需要验证该路径。
- location /lovestory: 后续要配置v2的路径伪装,我们将v2的流量伪装到lovestory路径下,其他流量走正常网站页面。
3.1.6 协议修改
这里我使用一键端配置较为方便,我们直接贴关键配置
1 | { |
至此就完成了所有配置,重启v2和nginx服务,使得配置生效即可。
4.讲在最后
在阅读各种教程文章的时候,我发现我们写博客常常会写某某技术教程,对于没有展现渠道和粉丝的博客(比如我,小丑竟是我自己),很多人在没接触到这个概念或技术名词到时候,很难去直接检索该名词,以获得该技能。
例如本文中讲到的CloudFlare自选IP,这个技术已经流行了几年之久了,网上教程也铺天盖地,然而我却不了解。因此不断学习,增加获得知识面的渠道真的很重要(这里还是要感谢90Team)。
PS:本文中的mytool.cc欲出售,2k给有缘人。^_^
文章评论