很多人第一次接入 Cloudflare 时,最自然的做法就是给域名打开小黄云。理论上,请求会进入 Cloudflare 全球网络,再由 Cloudflare 回源,安全、缓存、HTTPS 都能自动接上。

但在中国大陆网络环境下,普通小黄云经常不是“加速器”,反而像“减速器”:延迟高、丢包、晚高峰抽风、不同运营商表现差异很大。于是才会出现“Cloudflare 优选域名 / 优选 IP”这类玩法。

这篇文章不只给步骤,也解释为什么要这样绕一圈:用 Cloudflare for SaaS 保留 Cloudflare 的路由规则层,同时把 DNS 解析层交给优选 CNAME 来控制入口。

为什么直接开小黄云可能变慢?

先回答最关键的问题:

正常直接打开 Cloudflare 小黄云不就好了,为什么还要 Cloudflare for SaaS + 优选 CNAME 这么麻烦?

原因是:Cloudflare 免费/普通区域的 Anycast 调度不保证对中国大陆网络友好。

Cloudflare 在中国大陆没有面向普通免费站点开放的大陆边缘 CDN 节点。大陆用户访问开启小黄云的网站时,通常会被调度到境外 Cloudflare 节点,例如香港、日本、新加坡、美国等。这个调度在不同地区、不同运营商、不同时间段的表现差异很大:

  • 有时延迟高。
  • 有时丢包严重。
  • 有时电信还行,移动很差。
  • 有时白天能用,晚高峰变慢。
  • 有时同一个域名换个 Cloudflare 入口就明显变快。

所以“优选”的本质不是让 Cloudflare 变成大陆 CDN,而是人为挑一个对当前网络更友好的 Cloudflare 入口,减少默认 Anycast 调度带来的不确定性。

为什么普通小黄云在大陆可能变成减速器

普通小黄云的问题在于:DNS 解析和 Cloudflare 路由规则是绑定在一起的。你打开代理,Cloudflare 替你返回它认为合适的边缘 IP;你关掉代理,Cloudflare 的路由规则又不再接管这个 hostname。

Cloudflare for SaaS 的价值就在这里:它允许你把这两层拆开。

核心原理:拆开“解析层”和“规则层”

一个 Cloudflare 代理域名其实同时包含两件事:

  1. 解析层:DNS 返回哪个 Cloudflare 入口。
  2. 规则层:请求到了 Cloudflare 之后,Cloudflare 知道这个 hostname 应该怎么处理、用哪个证书、回哪个源站。

普通小黄云把这两件事打包了。Cloudflare for SaaS 可以把它们拆开:

Cloudflare for SaaS 把解析层和规则层拆开

最终我们想要的结构是:

用户访问 site.example.com
  ↓ DNS 灰云 CNAME
site.example.com → cdn.example.com → 优选 CNAME 目标
  ↓ 进入 Cloudflare 边缘网络
Cloudflare for SaaS 识别 Custom Hostname = site.example.com
  ↓ Custom Origin 回源
origin.example.com → 你的源站服务器

注意这里有两个关键点:

  • site.example.comcdn.example.com 必须保持灰云,否则 DNS 链会被 Cloudflare 当前 zone 提前接管,优选入口就失效了。
  • origin.example.com 必须开启小黄云,因为 Cloudflare for SaaS 的 Custom Origin Server 要求是同账号中已代理的 A / AAAA / CNAME 记录,不能直接填 IP。

cf.090227.xyz 这类优选域名是什么?

cf.090227.xyz 是社区维护的 Cloudflare 优选域名汇总站之一。它会汇总一些 Cloudflare 优选域名、支持端口、运营商线路入口,并提供类似 *.cf.090227.xyz 的泛域名用法。

例如:

cf.090227.xyz
site.cf.090227.xyz
myblog.cf.090227.xyz

这类服务通常会通过持续测速、线路分流或定时更新解析结果,把域名解析到当前相对更合适的 Cloudflare 入口。你可以把它理解为“第三方维护的 Cloudflare 入口选择器”。

但它不是 Cloudflare 官方能力,也没有官方 SLA。使用前建议自己验证:

  • 解析结果是否仍然指向 Cloudflare 相关网络。
  • 你所在地区和运营商访问是否真的更快。
  • HTTPS 是否稳定。
  • 服务方是否有免责声明和更新说明。
  • 是否准备了回退方案。

本文后续仍然使用 best-cf-entry.example.net 作为占位目标。实际配置时,你可以替换成 cf.090227.xyzyour-prefix.cf.090227.xyz,或其它你实测更合适的优选 CNAME。

推荐域名规划

以下全部是保留示例域名,不是实际配置:

origin.example.com  A      203.0.113.10                 Proxied / 橙云
cdn.example.com     CNAME  best-cf-entry.example.net    DNS only / 灰云
site.example.com    CNAME  cdn.example.com              DNS only / 灰云

三个域名各自负责:

  • origin.example.com:回源入口,指向你的真实源站,开启小黄云。
  • cdn.example.com:承接优选 CNAME,保持灰云。
  • site.example.com:用户最终访问的业务域名,保持灰云。

为什么不直接让 site.example.com CNAME 到优选目标?可以,但多一层 cdn.example.com 更方便维护。以后你想换优选目标,只改 cdn.example.com,业务域名不用动。

配置步骤

第一步:创建回源域名

在 Cloudflare DNS 中添加:

Type: A
Name: origin
Value: 你的源站 IP
Proxy status: Proxied / 橙云

这里使用 203.0.113.10 只是文档保留 IP。实际配置时替换成你的源站 IP。

第二步:创建优选 CNAME 链

在同一个 zone 里添加:

Type: CNAME
Name: cdn
Target: best-cf-entry.example.net
Proxy status: DNS only / 灰云

再添加:

Type: CNAME
Name: site
Target: cdn.example.com
Proxy status: DNS only / 灰云

如果你决定使用 cf.090227.xyz 这类公共优选域名,cdn 这一条可以类似这样:

cdn.example.com CNAME your-prefix.cf.090227.xyz  DNS only

第三步:添加 Cloudflare for SaaS Custom Hostname

进入 Cloudflare Dashboard:

SSL/TLS → Custom Hostnames → Add Custom Hostname

填写:

Hostname: site.example.com

然后给这个 hostname 设置:

Custom Origin Server: origin.example.com

这才是这套方案的核心:

  • DNS 解析层由 site → cdn → 优选 CNAME 控制。
  • Cloudflare 规则层由 Custom Hostname site.example.com 控制。
  • 回源由 Custom Origin Server origin.example.com 控制。

如果 Cloudflare Dashboard 要求先设置 Fallback Origin,可以把它也设为 origin.example.com。但不要把“走 fallback”当成这个方案的核心;正常情况下,给当前 Custom Hostname 明确配置 Custom Origin Server 就可以。

第四步:等待证书和 hostname 激活

Cloudflare for SaaS 通常有两个状态需要等:

  • Hostname status:Active
  • Certificate status:Active

一个是 hostname 验证,一个是证书签发。两者都正常之后,再切生产流量更稳。

第五步:配置源站 Web Server

使用 Custom Origin 后,要注意 Cloudflare 回源时的 Host 和 SNI。

Custom Origin 回源时的 Host 和 SNI

Cloudflare for SaaS 的默认行为是:

Host: site.example.com
SNI:  origin.example.com

也就是说:

  • HTTP Host 仍然是用户访问的业务域名 site.example.com
  • TLS SNI 会使用 Custom Origin Server,也就是 origin.example.com

所以源站必须同时满足:

  1. TLS 层能拿出匹配 origin.example.com 的证书。
  2. HTTP 层能接受 Host: site.example.com 并返回正确站点。

如果你使用 Caddy,可以直接写成:

site.example.com, origin.example.com {
    root * /var/www/blog
    encode gzip zstd
    file_server
}

这样 Caddy 会为两个 hostname 管理证书,并把它们都映射到同一个站点目录。

修改后验证并 reload:

sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

如何验证

1. 检查 DNS 链

dig +short site.example.com CNAME
dig +short cdn.example.com CNAME
dig +short best-cf-entry.example.net

你应该能看到类似链路:

site.example.com → cdn.example.com → 优选 CNAME 目标 → Cloudflare 入口 IP

2. 检查公网访问

curl -I https://site.example.com/

正常情况下应该返回:

HTTP/2 200
server: cloudflare

如果出现反复 301 / 308,重点检查 Cloudflare SSL 模式和源站强制 HTTPS 配置。不要使用 Flexible,推荐至少 Full,最好 Full strict。

3. 在源站模拟 Custom Origin 回源

在源站机器上执行:

curl -k -I --resolve origin.example.com:443:127.0.0.1 https://origin.example.com/ -H 'Host: site.example.com'

如果返回 200,说明源站能处理:

SNI = origin.example.com
Host = site.example.com

这一步能提前发现大多数 Full strict / Caddy / Nginx 配置问题。

常见错误

site.example.com 开了小黄云

这是最常见错误。site.example.com 一旦开橙云,就不是走你的灰云 CNAME 链,而是被当前 Cloudflare zone 直接接管,优选入口基本失效。

cdn.example.com 开了小黄云

同理,cdn.example.com 也必须灰云。它只是承接优选 CNAME,不应该被 Cloudflare 当前 zone 代理。

origin.example.com 没开小黄云

Cloudflare for SaaS 的 Custom Origin Server 必须是已代理的 hostname。origin.example.com 如果是灰云,Custom Origin 可能无法按预期工作。

直接在 Custom Origin 里填 IP

不支持。先创建橙云 hostname,再把 hostname 填到 Custom Origin Server。

源站只配置了 site.example.com

使用 Custom Origin 时,SNI 默认是 origin.example.com。如果源站没有 origin.example.com 的证书,Full strict 很容易失败。

优选 CNAME 目标失效

公共优选域名不是官方 SLA。目标可能失效、解析变慢或线路变化。建议保留一个普通 Cloudflare 小黄云接入方式作为回退方案。

什么时候不适合这样做?

这套方案适合个人站、静态博客、小型服务,用来改善大陆访问 Cloudflare 默认入口不稳定的问题。

如果你是正式生产业务,并且要求稳定 SLA、自动故障切换、多地域健康检查,就不应该只依赖公共优选 CNAME。更合适的方案可能是:

  • Cloudflare Load Balancing
  • Cloudflare Tunnel
  • 自建测速和 DNS 调度
  • 多云/多源架构
  • 企业版 Cloudflare China Network

总结

Cloudflare for SaaS 优选域名加速不是“玄学加速”,它解决的是一个很具体的问题:

普通小黄云在大陆网络里经常被默认调度到体验很差的 Cloudflare 入口,而 Cloudflare for SaaS 允许我们保留 Cloudflare 的 hostname 规则层,同时自己控制 DNS 解析入口。

记住这几条就不容易配错:

site.example.com   灰云,用户访问域名
cdn.example.com    灰云,CNAME 到优选入口
origin.example.com 橙云,Custom Origin 回源域名

以及:

Custom Hostname = site.example.com
Custom Origin Server = origin.example.com

最后再强调一次:优选 CNAME 只是改善入口质量,不改变 Cloudflare 到源站的距离和质量。它能不能提升体验,要以你自己的地区、运营商和实测结果为准。