Cloudflare for SaaS 实现 CNAME 接入 CDN 支持国内外智能分流建站
前言
也许你已经看到过非常多的 SaaS 接入 Cloudflare 教程了,但是大部分教程一开头就是教你如何操作的,小白看的一头雾水也不知道 SaaS 是干什么用的,再加上前阵子 Cloudflare for SaaS 开放了更多免费功能,老教程中的内容可能有一部分过时了。
这里先简单介绍一下通过 SaaS 接入 Cloudflare CDN 有什么优势:
将托管在其他 DNS 服务商的域名接入 Cloudflare CDN
- 进阶:借助分线路解析还可以实现国内走优化线路,国外走 Cloudflare CDN 智能分流
优选 Cloudflare IP 接入更快的 CDN 节点
- 进阶:部分域名使用 Cloudflare 打开小黄云会分配到
.1
结尾的 IP(被屏蔽的节点)导致国内无法访问,优选后可以避免这种问题
- 进阶:部分域名使用 Cloudflare 打开小黄云会分配到
像下图这种情况,常见于各类免费域名、低价域名,直接托管到 Cloudflare 打开小黄云分配的 IP 全部都是 .1
结尾的,国内根本无法访问,这时候就需要通过优选的方式来修改 Cloudflare 分配的 IP 以达到国内正常访问的目的。

准备工作
域名
准备两个域名,一个为主域名,另一个为牛马域名,其中主域名就是你要用来对外访问的业务网站,需要将其托管到除了 Cloudflare 以外的 DNS 服务商(否则会报错);牛马域名则必须托管在 Cloudflare 用于回源。
提示
1.牛马域名只用于回源,因此并没有任何要求,无论是纯数字 xyz 域名还是各种免费域名,只要能托管到 Cloudflare 就可以使用
2.以往一个牛马域名只能回源 1 个 IP,但更新后支持回源多个IP,因此如果网站多的话再也不需要一堆免费域名,共用同一个牛马域名即可
Cloudflare 账号
尽管 Cloudflare for SaaS 功能是免费功能,但使用时是需要 Cloudflare 账号绑定支付方式,国内用户可以选择绑定国区 PayPal。
DNS 服务商
主域名推荐托管在支持分线路解析的 DNS 服务商,只有这样才能实现国内走优化线路,国外走 Cloudflare CDN。
例如 DNSPod、火山引擎、华为云,这些服务商的免费套餐就可以使用分线路解析,有些 DNS 服务商可能需要付费套餐才可以使用。
实现思路
以国内外智能分流为例,将默认线路 CNAME 解析到牛马域名回源,将国内线路 A 解析到优化线路,此时访问就分两种情况:
- 国内访问
- 从国内访问时,会直接解析到优化线路的 VPS,保障国内的访问速度
- 国外访问
- 从国外访问时,通过 CNAME 解析到牛马域名后,相当于访问到了 Cloudflare 的 CDN 节点
- 接着会根据设置的自定义主机名 (Custom Hostnames) 与回退源 (Fallback Origin) 再访问到源站
信息
自定义主机名 (Custom Hostnames) 用于识别你的主域名,回退源 (Fallback Origin) 用于访问你的源站
具体操作
在开始操作之前,我们先约定一下后面示例,便于大家理解
- 主域名也就是对外访问的业务域名,后面以
www.maim.com
为例 - 牛马域名也就是回源域名,通常是免费域名或者低价域名,后面以
xxxx.eu.org
为例
牛马域名
解析
解析这一步很简单,像正常网站解析一样,只要将牛马域名解析到源站的 IP 即可,同时打开小黄云,域名可以填写 fallback.xxxx.eu.org
提示
源站的 Nginx 不需要添加牛马域名 fallback.xxxx.eu.org
,访问时提示错误不影响最终 CNAME 接入
否则两个一模一样的网站可能会影响 SEO

回退源
来到 SSL/TLS -> Custom Hostnames
中,设置回退源,首次使用需要先订阅 Cloudflare for SaaS 功能

Cloudflare for SaaS 功能本身是有免费额度的,100 个自定义主机头以内的费用都是 0 元,但订阅该功能需要 Cloudflare 账号绑定支付方式

完成订阅后,填写刚才解析的回源域名,如 fallback.xxxx.eu.org
,点击 “Add Fallback Origin”,这样就设置好了默认回退源

自定义主机头
接着点击上方的“Add Custom Hostname”添加自定义主机头,在上方的“Custom Hostname”中填写自己的主域名,如 www.main.com
以往回退源只能选择刚才添加的默认回退源,也就是 fallback.xxxx.eu.org
,因此一个牛马域名只能回源一台 VPS
现在支持自定义后,可以选择“Custom origin server”来添加其他的回源域名,如 fallback-hk.xxxx.eu.org
fallback-jp.xxxx.eu.org
fallback-us.xxxx.eu.org
,实现一个牛马域名回源多台 VPS

添加完自定义主机头后,返回刚才的页面还需要添加两个 TXT 解析来验证主域名,我们可以在后面主域名解析的时候一起添加

主域名
解析
主域名推荐使用支持分线路解析的 DNS 服务商,我们需要添加 4 条记录
- 2 条 TXT 记录用于验证自定义主机头,按照刚才上方的提示添加即可
- 1 条 CNAME 记录默认线路解析到回源域名(必须,直接解析优选域名会报错)
- 1 条 A 记录国内分线路解析到优化线路(非必须,如果你只想接入 Cloudflare 的 CDN 可以省略该步骤)

完成上面的解析后,再返回来看自定义主机头,Certificate status 和 Hostname status 都显示绿色的“Active”就大功告成了。

优选
危险
理论上访问任意 Cloudflare CDN 节点,只要正确携带网站 Host,通常情况下也可以正常的回源
因此如果将默认线路直接解析到优选的 IP 或域名就可以实现加速访问,但有两点需要注意:
1.优选 IP 违反 Cloudflare ToS,账号可能会受到限制
2.解析到部分受限制的 CDN 节点会触发 Error 1034
如果你想优选的话其实不难,将默认线路的 CNAME 解析修改为优选域名即可,最简单的直接填写 visa.com
csgo.com
或者更加简单粗暴的可以 A 解析到反代了 Cloudflare 的优化线路 IP,但这样可能不太稳定(至于这 IP 怎么来的就看各位的本领了)
总的来说,没有特殊需求,还是不建议大家优选,一方面违反 ToS,另一方面也没有 CNAME 解析自己的回源域名稳定
最终效果
可以看到完成所有操作后,域名解析只有 3 个结果,其中打码的是国内访问解析到的优化线路 IP,后两者是则是国外访问解析到的 Cloudflare IP,相比原先国内完全无法访问提升明显。

常见问题
Error 525 / Error 526
SSL handshake failed / Invalid SSL certificate


常见原因:两者都是 SSL 问题,在 Cloudflare 的 SSL 设置中 Full 或者 Full (Strict) 之后,源站没有正确的配置 SSL 证书(未开启 HTTPS 或 证书错误)。
解决方法:Cloudflare 的 SSL 设置为 Flexible (不推荐) 或者在源站正确配置好主域名的证书
Error 1000 / Error 1014
DNS points to prohibited IP / CNAME Cross-User Banned
常见原因:Cloudflare 的限制,禁止解析到它的 CDN 节点,同时也禁止 CNAME 到其他 Cloudflare 账号的域名。
出现这种错误,主要原因是你的主域名托管在 Cloudflare 并且 CNAME 到了回源域名 / 优选域名,就会触发限制。
解决方法:主域名托管到其他 DNS 服务商
Error 1001
DNS resolution error

常见原因:自定义主机头还未完成验证,Hostname status 没有 Active 就直接 CNAME 解析到优选域名了
解决方法:主域名先 CNAME 解析到自己的回源域名完成验证后,再更换为优选域名;更推荐分线路解析在国内使用优选域名,国外使用自己的回源域名
Error 1034
Edge IP Restricted

常见原因:主域名直接解析到了 1.1.1.1
1.0.0.1
1.0.0.5
或者付费用户专属的 IP,这些 IP 是无法使用的。
解决方法:直接 CNAME 到自己的回源域名或者更换优选域名