$ pwd: ~ / 技术分享 / article/cloudflare-saas-worker-custom-domain-pages-proxy-guide

Cloudflare SaaS回源 + Worker实现国内域名访问Pages完整指南

// 使用 Cloudflare for SaaS 和 Workers,让国内注册的域名无需备案也能享受 Cloudflare CDN 加速访问 Pages 托管的网站

git-status.logreadonly
$ git log --oneline --stat
📁 category: 技术分享📅 updated: 2026-01-21🏷️ tags: 建站, DNS, Cloudflare
article/cloudflare-saas-worker-custom-domain-pages-proxy-guide.mdreadonly
type
status
date
slug
summary
tags
category
icon
password
最近将博客从Vercel迁移到了Cloudflare Pages,原因是Vercel的每个月免费边缘请求数量已经满足不了小博客的成长所需,而Vercel最低的付费门槛又很高,正巧NotionNext又支持静态部署在Cloudflare Pages,所以决定尝试一下。但问题来了:传统做法是将回源域名CNAME直接指向xxx.pages.dev,但这样做会导致522错误,因为Cloudflare Pages无法绑定@记录的根域名,除非将域名迁移到Cloudflare。Cloudflare不认识你的自定义域名,自然也就会拒绝请求。
经过一番折腾,我找到了一个暂时完美的解决方案:Cloudflare for SaaS(Custom Hostnames)+ Workers代理。这个方案可以让国内域名在不转移DNS托管的情况下,完美使用Cloudflare CDN加速国内访问Cloudflare Pages。
本文将详细记录整个配置过程以及踩过的坑。

📝 方案原理

为什么直接CNAME到Cloudflare Pages不行?

当你将国内域名直接CNAME指向xxx.pages.dev时:
  1. 用户访问deeprouter.org
  1. DNS解析到Cloudflare Pages服务器
  1. 请求到达Cloudflare Pages, 但HTTP Host头是deeprouter.org ,通过Curl -I可以查询到。
  1. Pages检查发现没有绑定deeprouter.org → 返回 522/404 错误

SaaS 回源 + Worker方案如何解决?

notion image
核心思路:
  1. 准备一个已托管在Cloudflare 的域名(如 new.site)作为回源域名
  1. 配置Custom Hostname,让Cloudflare为国内域名签发SSL证书
  1. 使用Worker拦截请求,将Host头改为xxx.pages.dev
  1. 国内域名CNAME指向回源域名
这样Pages收到的请求Host头是xxx.pages.dev,就能正常响应了。

📝 前置条件

在开始配置之前,请确保你具备以下条件:
条件
说明
Cloudflare 账号
免费版即可
一个托管在 Cloudflare 的域名
作为回源域名,如 new.site
一个国内注册的域名
需要加速的目标域名,如 deeprouter.org
Cloudflare Pages 项目
已部署的网站,如 notion*****.pages.dev

📝 配置步骤

步骤一:配置回源域名的DNS记录

首先需要为回源域名(new.site)添加一条A记录,用于触发Worker。
进入Cloudflare Dashboard → 选择 new.site → DNS → 添加记录
类型
名称
内容
代理状态
A
@
192.0.2.1
已代理(橙色云朵)
重要192.0.2.1 是一个保留 IP,不会真正路由到任何服务器。我们只需要它触发 Cloudflare 代理,让 Worker 能够拦截请求。

步骤二:创建Cloudflare Worker

进入Cloudflare Dashboard → Workers & Pages → 创建Worker
给Worker起一个酷炫且易于识别的名字(如 pages-proxy),然后替换为以下代码:
常见错误TARGET_HOST 只能填写纯域名(如 notionnext-8nt.pages.dev),不能带 https:// 或末尾斜杠,否则会导致 522 错误。
点击 保存并部署

步骤三:配置Worker路由

这应该是整个过程中最容易遗漏的一步。在Cloudflare Worker创建后,需要绑定路由才能生效。
进入Cloudflare Dashboard → newtomy.site → Workers 路由 → 添加路由
添加以下路由规则:
路由
Worker
说明
new.site/*
pages-proxy
回源域名路由
*.new.site/*
pages-proxy
回源域名路由
deeprouter.org/*
pages-proxy
加速域名路由
*.deeprouter.org/*
pages-proxy
加速域名路由
关键点:必须为需要加速的国内域名 deeprouter.org/* 单独添加路由!因为尽管配置了Custom Hostname,但那只管 SSL证书,不会自动触发我们配置好的Cloudflare Worker。

步骤四:配置Custom Hostname(SaaS回源)

这一步让Cloudflare为国内域名签发SSL证书。
进入Cloudflare Dashboard → new.site → SSL/TLS → Custom Hostnames

4.1 配置 Fallback Origin

首先设置回源地址:
  • Fallback Originnew.site
等待状态变为Active

4.2 添加 Custom Hostname

点击 Add Custom Hostname,输入:
  • Custom Hostnamedeeprouter.org
Cloudflare 会提供验证记录,你需要在国内 DNS(如 DNSPod)添加对应的 TXT 记录来完成验证。
验证记录通常类似:
添加后等待几分钟,状态会变为:
  • Certificate status: Active
  • Hostname status: Active

步骤五:配置实际访问域名的DNS

这是最后一步,也是最容易出错的一步。进入你的国内域名DNS管理后台(例如我的是DNSPod),修改域名的解析记录:
主机记录
记录类型
记录值
@
CNAME
new.site
www
CNAME
new.site(可选)
常见错误:很多人会把CNAME直接指向 xxx.pages.dev,但是这正式出现522错误的根源之一。实际访问的域名,也就是需要加速的域名必须指向回源域名 newtomy.site,流量才能经过Worker处理。

📝 验证配置

等待DNS生效后(通常几分钟),使用以下命令测试:
如果配置正确,两个域名都应该返回HTTP/2 200状态码。

📝 配置Saas回源加速

在验证配置环节没有问题后,可以实际访问的域名DNS记录修改为优选域名,例如csgo.comlinux.do等,从而优化Cloudflare CDN在国内的访问速度。

📝 常见问题排查

问题一:522错误

可能原因及解决方案:
原因
排查方法
解决方案
DNS指向错误
检查CNAME是否指向 pages.dev
改为指向回源域名
Worker代码错误
检查TARGET_HOST是否带 https://
只填写纯域名
Worker路由缺失
检查是否为国内域名添加了路由
添加deeprouter.org/* 路由
代理未开启
检查A记录是否为橙色云朵
开启Cloudflare代理

问题二:SSL 证书错误

可能原因:
  • Custom Hostname验证未完成
  • TXT验证记录填写错误
解决方案: 检查Custom Hostnames页面,确认Certificate status和Hostname status都是Active。

问题三:回源域名可以访问,国内域名不行

原因:Cloudflare Worker路由没有包含国内域名。
解决方案: 在Cloudflare Workers Routes 中添加你需要加速的域名(非回源域名) → 你的Worker。

🤗 总结归纳

这个方案的核心思路是利用Worker 作为"中间人",将请求的Host头修改为Pages认可的域名,从而绕过Pages的域名验证限制。
整个配置过程中最容易踩的三个坑:
  1. DNS指向错误:必须指向回源域名,不能直接指向pages.dev
  1. Worker 代码 bugurl.hostname只接受纯域名
  1. Worker 路由缺失:必须为国内域名单独添加路由

📎 参考文章

 
有关Cloudflare SaaS 回源或 Workers 使用的问题,欢迎您在底部评论区留言,一起交流~ 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
comments.logreadonly