最近给博客接入 Cloudflare for SaaS 时,我顺手把“优选域名加速”的链路也整理了一遍。这个方案的核心不是把 Cloudflare 绕开,而是把用户入口从 Cloudflare 自动分配的边缘节点,改成一个你测试后更稳定的 Cloudflare 入口,再通过 Cloudflare for SaaS 把请求转回自己的源站。
这里的 SaaS 指的是 Cloudflare for SaaS / Custom Hostnames,不是前端里的 Sass。
先说结论
如果你只是想让一个静态博客通过优选入口访问,推荐的最小结构是:
origin.example.com:A / AAAA / CNAME 到你的源站,橙云,作为 Cloudflare for SaaS 的 fallback origin。cdn.example.com:CNAME 到你测试出来的优选目标,灰云。site.example.com:CNAME 到cdn.example.com,灰云。- Cloudflare for SaaS:添加 Custom Hostname
site.example.com。 - Origin:优先使用 Fallback Origin = origin.example.com,不要一上来就给
site.example.com单独填 Custom Origin。
以下使用保留示例域名说明结构:
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 / 灰云
其中 best-cf-entry.example.net 是占位写法。实际使用时,可以替换成自己实测可用、可信且稳定的 Cloudflare 优选 CNAME 目标,例如公开汇总站里常见的 cf.090227.xyz 或它的自定义前缀泛域名。
cf.090227.xyz 是什么?
cf.090227.xyz 是一个社区维护的 Cloudflare 优选域名汇总站。它的页面会汇总一些可用的 Cloudflare 优选域名、支持端口和运营商线路入口,并说明 *.cf.090227.xyz 是泛域名:例如下面这些写法理论上可以指向同一套优选解析逻辑:
cf.090227.xyz
site.cf.090227.xyz
myblog.cf.090227.xyz
它还提供了按运营商区分的 API 入口,例如电信、联通、移动对应的优选 IP 查询接口。对于个人站点来说,你可以把它理解为“第三方帮你持续筛选 Cloudflare 入口”的公共服务。
不过这类服务不是 Cloudflare 官方 SLA 的一部分,使用前建议自己验证:
- 解析结果是否仍然落在 Cloudflare 相关网络。
- 你所在地区和运营商访问是否真的更快。
- HTTPS 访问是否稳定。
- 服务方是否有更新说明和免责声明。
本文后续仍然使用 best-cf-entry.example.net 作为占位目标,避免把某个第三方域名写死成唯一推荐。你实际配置时,可以替换为 cf.090227.xyz、your-prefix.cf.090227.xyz 或其它你测试后更合适的优选 CNAME。
这套方案到底在加速什么?
普通 Cloudflare 托管时,请求路径通常是:
Cloudflare 本身会根据网络情况把用户调度到某个边缘节点。但在部分地区,自动调度到的入口不一定是你体感最好的那个。所谓“优选域名”,本质上是人为指定一个更合适的 Cloudflare 入口,让访客先走到那里。
再通过 Cloudflare for SaaS,Cloudflare 会把 site.example.com 识别为一个 Custom Hostname,并按你配置的 fallback origin 或 custom origin 回源。
所以它优化的是这一段:
访客 → Cloudflare 入口
不是这一段:
Cloudflare → 你的源站
如果你的源站本身在海外,而用户也在海外,这个方案未必有明显提升;如果你的用户所在网络到默认 Cloudflare 入口不稳定,优选入口才可能有价值。
三个域名各自负责什么
这套配置容易混乱,是因为我们会同时使用三个域名:
origin.example.com:回源域名
这个域名指向你的真实源站,并且必须在 Cloudflare DNS 里开启小黄云。
Cloudflare 文档要求:Cloudflare for SaaS 的 fallback origin 或 custom origin 必须是同账号 DNS 中一个有效的、已代理的 A / AAAA / CNAME 记录,不能直接填 IP。
因此不要在 Cloudflare for SaaS 里直接填:
203.0.113.10
而是应该填:
origin.example.com
cdn.example.com:优选入口承接域名
这个域名只是用来 CNAME 到你的优选目标。它要保持灰云,否则 Cloudflare 会先把它代理掉,你的优选 CNAME 链就不再按预期工作。
cdn.example.com CNAME your-best-cf-target.example.net DNS only
site.example.com:用户真正访问的域名
用户最终访问的是 site.example.com。它也保持灰云,CNAME 到 cdn.example.com。
site.example.com CNAME cdn.example.com DNS only
当请求进入 Cloudflare 后,Cloudflare for SaaS 会根据 Custom Hostname 配置识别 site.example.com,再转发到你配置的 origin。
推荐配置路径
第一步:准备回源域名
在 Cloudflare DNS 中添加:
Type: A
Name: origin
Value: 你的源站 IP
Proxy status: Proxied / 橙云
如果你的源站是 Caddy,建议源站站点至少能处理最终访问域名:
site.example.com {
root * /var/www/blog
encode gzip zstd
file_server
}
如果你后面坚持用 Custom Origin = origin.example.com,那源站还需要同时接受 origin.example.com,原因后面会讲。
第二步:设置 Cloudflare for SaaS 的 Fallback Origin
进入 Cloudflare Dashboard:
SSL/TLS → Custom Hostnames → Fallback Origin
填写:
origin.example.com
等待状态变成 Active。
这一步的意义是告诉 Cloudflare:Custom Hostname 没有单独指定 origin 时,默认回源到 origin.example.com。
第三步:创建优选 CNAME 链
在 DNS 里添加:
cdn.example.com CNAME your-best-cf-target.example.net DNS only
site.example.com CNAME cdn.example.com DNS only
这里最容易错的是小黄云状态:
origin.example.com:橙云。cdn.example.com:灰云。site.example.com:灰云。
第四步:添加 Custom Hostname
进入:
SSL/TLS → Custom Hostnames → Add Custom Hostname
填写:
Hostname: site.example.com
如果你已经配置了 Fallback Origin,一般可以先不填 Custom Origin Server,让它走默认 fallback origin。
等待两个状态都变成可用:
- Hostname status:
Active - Certificate status:
Active
Cloudflare for SaaS 的证书签发和 hostname 激活是两条流程。不要只看浏览器能不能握手,Dashboard / API 里的状态才是更可靠的判断依据。
第五步:检查 SSL 模式
不要使用 Flexible。推荐至少使用 Full,理想情况下使用 Full strict。
如果 Full strict 不通,通常不是“优选域名”本身的问题,而是 Cloudflare 回源时的 SNI / Host / 源站证书没有对上。
Custom Origin 的 SNI 陷阱
很多人会在添加 Custom Hostname 时顺手填:
Custom Origin Server: origin.example.com
这不是一定错,但要知道它会改变回源 SNI 行为。
Cloudflare 文档里说明:
- 使用默认 fallback origin 时,回源
Host和 SNI 通常都是原始 custom hostname,也就是site.example.com。 - 使用 custom origin server 时,回源
Host仍然是site.example.com,但 SNI 会变成 custom origin,也就是origin.example.com。
这会导致一个典型问题:
Host: site.example.com
SNI: origin.example.com
如果你的源站只为 site.example.com 配了证书和站点,Full strict 可能失败。
解决方法有三个:
- 最简单:不要给这个 hostname 单独设置 Custom Origin,让它走 Fallback Origin。
- 源站同时配置
site.example.com和origin.example.com的证书与站点。 - 如果你的 Cloudflare 计划支持,使用 SNI rewrite 或 Origin Rule 覆盖 SNI。
我更推荐第一种,除非你真的需要不同 custom hostname 回到不同源站。
Caddy 示例配置
如果你使用推荐的 fallback origin 模式,Caddy 可以只配置最终访问域名:
site.example.com {
root * /var/www/blog
encode gzip zstd
file_server
}
如果你已经使用了 Custom Origin Server = origin.example.com,建议这样配,确保回源 SNI 为 origin.example.com 时也能完成 TLS:
site.example.com, origin.example.com {
root * /var/www/blog
encode gzip zstd
file_server
}
改完后记得验证和 reload:
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
如何验证是否成功
DNS 链检查
dig +short site.example.com CNAME
dig +short cdn.example.com CNAME
dig +short your-best-cf-target.example.net
你应该能看到类似:
site.example.com → cdn.example.com → 优选目标 → Cloudflare 入口 IP
HTTP 访问检查
curl -I https://site.example.com/
如果正常,应该看到:
HTTP/2 200
server: cloudflare
源站回源模拟
如果你使用了 Custom Origin Server,可以在源站本机模拟:
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 的组合。
常见错误
1. site.example.com 开了小黄云
如果 site.example.com 开了小黄云,DNS 查询不会按你的 CNAME 链去走优选目标,而是直接由当前 Cloudflare zone 接管。
这通常会让“优选入口”失效。
2. origin.example.com 没开小黄云
Cloudflare for SaaS 要求 fallback origin / custom origin 是已代理的 DNS 记录。origin.example.com 如果是灰云,Fallback Origin 很可能无法激活。
3. 直接在 origin 里填 IP
不支持。要先在 DNS 里创建一个橙云 hostname,再把这个 hostname 填到 Cloudflare for SaaS。
4. 使用 Custom Origin 后 Full strict 失败
优先检查 Host / SNI / 证书是否匹配。Custom Origin 的默认行为会让 SNI 变成 custom origin hostname,而 Host 保持原始 custom hostname。
5. 优选目标失效
优选域名通常不是 Cloudflare 官方承诺的稳定能力。目标域名可能变更、失效、被污染或路由变差。建议保留一个可以快速回退的普通 Cloudflare 配置。
这套方案适合谁
适合:
- 静态博客、个人站、小型服务。
- 源站本身可通过 Cloudflare 正常访问。
- 主要瓶颈是本地网络到默认 Cloudflare 入口不稳定。
- 你能接受维护 DNS 链和 Cloudflare for SaaS 状态。
不适合:
- 对稳定性要求极高、不能接受非官方优选入口变化的业务。
- 源站 TLS / SNI / Host 配置不清楚的复杂系统。
- 需要多地域、健康检查、自动故障切换的正式生产业务。那应该考虑 Cloudflare Load Balancing、Tunnel 或更标准的多源架构。
总结
Cloudflare for SaaS 优选域名加速的关键不是“魔法加速”,而是拆清楚三件事:
- 访问域名如何通过灰云 CNAME 走到优选入口。
- Cloudflare for SaaS 如何识别 Custom Hostname。
- Cloudflare 如何通过 fallback origin 或 custom origin 回到源站。
只要记住这条原则,配置就不容易乱:
对外入口保持灰云,回源入口保持橙云;能用 Fallback Origin,就先别急着用 Custom Origin。