大概 10 刀多一点每月,换算软妹币 80 左右,比国内的绝大部分香港或境外同等配置云服务器划算。如果选择前 2 个套餐会更便宜。
不过,真正用过国外服务器的朋友都知道,受『功夫王』的影响,国外服务器一到傍晚就会抽搐不已。于是考虑套一层 CDN 来缓解下,而且也可能帮忙扛一扛恶意攻击什么的。
CloudFlare(后文简称 CF)是什么,怎么设置我这里就不赘述了,大家可以网上搜下 CF 的详细使用教程,有非常多的网友、博主分享了图文并茂的教程。下面主要是记录、分享一下张戈博客在使用 CF 中发现的一些经验或技巧,希望给在用或将要用 CF 的同学提供一些参考。
一、CNAME 接入方式
了解过 CF 的同学可能知道了,CF 免费套餐只能通过 NS 方式接入。这个方式用起来不够灵活、生效很慢,而且最重要的问题是没法在解析的时候手工解析到 CF 节点 IP 地址。
要实现 CF 的 CNAME 接入方式也很简单,这里使用第三方的 CF 管理平台即可,比如张戈博客使用的是:BNXB 。这类平台通过 CF 的 API 来操作域名,所以他们把 CF 的所有功能选项都本地化、中文化了,极大的降低了国内用户的使用门槛!当然,最吸引我的还是可以使用 CNAME 接入方式。
接入很简单,注册平台账号并参考提示绑定 CF 的 API 账号,即可在平台进行接入操作。这里可以直接选择 CNAME 接入方式:
如果觉得描述理解费劲,不知道怎么填写,其实也可以先选择 DNS 接入方式,然后在平台可以再次转换为 CNAME 方式。这个平台可以随时在 CNAME 和 DNS 接入方式之间互相转换:
接入完成后,我们可以参考网络上前人分享的一些经验,优化一下配置(都是中文的,这里我就不一一介绍了),平台会给出一个可用的 CNAME 记录:
这时候,我们就可以在原来的域名管理(比如 dnspod、万网等)那里,将之前的@或 WWW 记录解析到这个 cname,就完成了 CF 的接入了。
二、指定节点解析
如上文图 6 最后所示,接入 CF 之后,CF 会给域名分配一个入口 IP,一般是美西洛杉矶那边的。这个 IP 其实是采用的 AnyCast 技术,当用户访问到时候,会就近分配一个真实的节点 IP,以加快访问速度。所以,通过 ping 工具去探测出来的 IP 都只是 AnyCast 入口 IP,并不能展示真实的节点 IP 地址是多少。
不过,要查看真实节点 IP 的方法也很简单,CF 每一个节点都有一个 trace 接口,访问方式为:http://{节点 IP/域名}/cdn-cgi/trace。比如要查看张戈博客的真实节点地址,则访问 https://zhang.ge/cdn-cgi/trace 。
通过实测发现,目前国内用户访问默认还是会走美西节点,只有移动和教育网会走香港节点。因此国内用 CF 的效果仍然不够乐观。如此一来,就会有同学奇思妙想了,既然能找到真实节点,那是不是我可以固定解析到一些速度快的节点呢?比如香港节点。答案是肯定的!!
有了上面 CNAME 接入的前提条件,我们就可以在域名解析那里任意解析到节点 IP 了。反之,使用 NS 方式接入就不能这么任性了。
CF 的具体节点 IP 这里就不公布了,感兴趣的自己去谷歌、百度搜下看看。
这样一来,电信和联通 2 个大户,本来是走美西慢出翔,现在就可以走两个相对高速的节点了,速度得到极大提升!而默认线路使用 CF 默认分配的 AnyCast 入口 IP,一是移动运营商用户可以走香港线路,二是为了兜底。说到兜底,这里不得不再分享一个 dnspod 的使用技巧——D 监控:
如图所示,dnspod 的 D 监控功能,可以探测站点是否可用,若不可用可以自动切换到可用的 IP。所以在图 7,我给电信和联通都设置了 2 个 IP(免费套餐最多 2 个)。也就是说,当 D 监控发现手工指定的 CF 节点宕机,则可以自动切换到另外 2 个 IP(包括默认的 AnyCast IP),也就又多了一层保障:
三、强制缓存配置
当我接入 CF 之后,我发现虽然我在 cache 等配置里面设置了缓存,实际上页面并没有缓存到 CDN 节点。最终,通过官网的帮助文档,发现 CF 默认并不会缓存 html 页面(文档地址),而需要设置自定义的 Page Rules,这个和百度云加速那个自定义规则其实一模一样!所以说,百度云加速其实就是『借鉴』CF 来设计的。
既然一模一样,因此可以参考我之前分享的百度云加速自定义规则设置来设置 CF 的 Page Rules 了,如图:
还是和百度云加速一样(或者说百度云加速和 CF 一样),免费套餐只能设置 3 条规则,因此不愿意花钱的我们也就只能如图设置了:除了后台和评论分页不缓存,其他一律缓存。如图所示,其中还有个最关键的地方,Edge Cache TTL这个选项必须要设置一下,否则依然不会缓存的哦!
虽然有些粗放,但是对于个人博客是可以接受的,除非有什么特殊页面也要求不缓存时,可能无法满足。当然,如果你确实需要更多规则,也可以花 5 刀/月额外购买 5 条:
另外,我从 CF 帮助文档看到,Page Rules 其实是可以根据 cookies 来配置页面规则的,当时我没找到,应该是收费版本才有。就是不知道 5 刀购买的 5 条规则是否可用通过 cookie 实现更加灵活点配置。描述如下:
How do you specify cookie names for Bypass Cache Cookie or Cache on Cookie?
Note that Bypass Cache on Cookie is available only on Business and Enterprise plans & Cache on Cookie is Enterprise only.
You can specify multiple cookie names by using the OR “|” operator. For example, to matchcookie1
,cookie2
, orcookie3
, you would write:cookie1|cookie2|cookie3
. You can also use the wildcard “.*” operator, i.e.cookie1.*
.
如果可以通过 cookie 来配置,那就非常强大了,比如官网给出的WordPress 专用配置:
四、WordPress 插件
使用 CDN 之后,很多朋友可能会被缓存困扰,比如内容更新,前台却因 CDN 缓存死活看不到最新内容,可谓乐也缓存、烦也缓存。因此,每次我使用一个新的 CDN,都会写一些配套的缓存自动清理代码(我没用过的,自然也不会花时间去研究的啦~~),比如之前分享过:
- WordPress 发布/更新文章、提交/审核评论自动清理腾讯云 CDN 缓存
- WordPress 发布/更新文章、提交/审核评论自动清理阿里云 CDN 缓存
- WordPress 发布/更新文章、提交/审核评论自动清理 VeryCloud 缓存
这次,也不例外。而且 CF 明显有更加成熟的 API 接口,正打算开撸的时候,我发现了新大陆!其实 CF 有专用的 WordPress 插件,名称就叫 Cloudflare。我们只需要在后台插件界面搜索安装即可:
安装后,在插件设置界面登陆 CF 账号,就可以得到一个简易版的 CF 控制后台了:
当然,这些功能我们在官方或者第三方平台都能配置,只能说是锦上添花。而我们最关注的功能其实是再更新内容时能自动删除 CDN 缓存,插件是否支持?答案是肯定的!
如此一来,我就不用撸代码,你们也就不用折腾代码啦!真的爽歪歪!
五、敬请期待…
暂时就想到这么多,后续如果发现更多实用的 CF 配置技巧,我再继续更新到本文,敬请收藏关注!