本文最后更新于 239 天前,其中的信息可能已经有所发展或是发生改变。
众所周知网站必须备案才能使用国内的CDN服务,Cloudflare的小黄云在国内的访问速度也十分堪忧,甚至部分地区连基本的连通性都成问题,这对主机在海外的站长来说很难搞。在2022年之后CloudFlare 宣布更改了 CloudFlare for SaaS 的收费策略,每个账户可以有 100 个域名免费额度,这样一来我们便可以利用这项功能来加速国内用户访问境外主机的速度。这里主要复现这位大佬的教程,并为wordpress绑定了两个域名,这样国内国外可以通过两个不同的域名来访问同一个wordpress。
SaaS 回源的原理
其实通俗的来讲,我们其实是”借用”别人经过特殊优化的的CF线路(比如csgo.com)。当我们访问指定的自定义主机名时,请求是被发送到了优化后的Cloudflare边缘节点,在收到请求之后Cloudflare会检查是否有匹配的自定义主机名,如果有的话则会回源至回源服务器上。毕竟国内连通性的瓶颈在于用户和Cloudflare边缘节点,而不是Cloudflare边缘节点和原始服务器,甚至有时候边缘节点还会有缓存。
准备工作
两个域名:
- 自定义域名,你希望国内用户访问的域名,这个域名需要托管在支持DNS分区域解析的提供商(DNSPOD)那里。比如blog.stefanzhang.cn
- 回源域名,也是你希望加速国内访问速度的域名,这个域名需要托管在Cloudflare。比如blog.stefanzhang.com
整个过程对用户透明,用户只知道他们访问的是 blog.stefanzhang.cn 但实际上得到的内容可能是直接来自Cloudflare的缓存,或者是经过Cloudflare优化处理后的来自原始服务器的内容。
添加Cloudflare for SaaS回源
- 在cloudflare DNS 记录中添加一个A记录,将blog.stefanzhang.com解析到原始服务器IP
- 在cloudflare左边栏依次点击SSL/TLS -> 自定义主机名 -> 回退源,添加blog.stefanzhang.com为回退源
- 在cloudflare同一个页面上面点击添加自定义主机名
- 自定义主机名: 填写blog.stefanzhang.cn, 可以为一级或者二级均可
- TLS版本默认填写1.0即可
- 证书验证方法填写TXT验证
- 完成之后会看到证书验证 TXT和主机名预验证 TXT两个验证值
- 在DNSPOD DNS记录中分别填入这两个TXT名称和验证值
- 值得注意的是你的两个TXT验证名称应该不包含主域名, 例如直接复制下来是
_acme-challenge.blog.stefanzhang.cn
你应该删去
即为stefanzhang.cn
_acme-challenge
.blog
- 值得注意的是你的两个TXT验证名称应该不包含主域名, 例如直接复制下来是
- 大概一分钟之后cloudflare验证后中便会显示有效。
- 在DNSPOD中添加三个新的解析:
- CNAME 境内 blog -> csgo.com(也可以是其他优化后的IP或者域名比如visa.com)
- A记录 境外 blog-> 1.0.0.5
- CNAME 默认 @ -> blog.stefanzhang.cn
为wordpress开启多个域名
找到wp-congfig.php文件,编辑添加如下信息:
$domain = array("blog.stefanzhang.com", "blog.stefanzhang.cn");
if(in_array($_SERVER['HTTP_HOST'], $domain)){
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
}
define( 'WP_CONTENT_URL', '/wp-content');
原始服务器
最后别忘在原始服务器添加新的网站blog.stefanzhang.cn, 反向代理已经配置好的wordpress,并开启/配置好SSL证书。SSL证书我使用了DNSPOD提供的免费证书,一年一续期。
测试连通性
不说速度飞快吧,起码能用了
其他设置
- Cloudflare后台 -> SSL/TLS -> 概述 ->SSL/TLS加密模式改为 “完全”