Cloudflare Workers 默认会给一个 workers.dev 域名。

能用是能用,但国内访问有时候不太稳。还有些项目直接拿 workers.dev 当入口,延迟和可用性都看运气。

这里写一个比较常见的做法:不用默认的 workers.dev,改用自己的域名,再把这个域名 CNAME 到一个 Cloudflare 优选域名,最后用 Workers 路由接住请求。

说白了就是:

1
用户 -> 你的域名 -> 优选域名对应的 Cloudflare 节点 -> Workers 路由 -> 你的 Worker

这不是玄学加速,也不是保证永远最快。只是把入口换成一个更顺手的 Cloudflare 节点。

适用场景

这篇更适合这些情况:

  • 你已经有一个能正常访问的 Worker。
  • 默认的 workers.dev 入口在你的网络里不太稳定。
  • 你有自己的域名,并且域名已经托管在 Cloudflare。
  • 你想自己指定一个优选入口,而不是直接用 Cloudflare 自动生成的绑定方式。

如果你只是想给 Worker 绑一个普通域名,不折腾优选,直接用自定义域名会更简单。

先说结论

这篇用的是 Workers 路由,不是自定义域名。

原因很简单:

  • 自定义域名会让 Cloudflare 自动创建 DNS 记录。
  • 但这里需要手动把域名 CNAME 到优选域名。
  • 所以更适合用 域名/* 这种 Workers 路由。

如果你只是正常部署一个 Worker,不搞优选,用自定义域名更省事。

如果你想自己指定优选入口,用路由更合适。

前置条件

需要这些:

项目 说明
Cloudflare 账号 用来部署 Worker
一个托管在 Cloudflare 的域名 比如 example.com
已经部署好的 Worker 先确保 Worker 自己能访问
一个优选域名 比如别人维护的 Cloudflare 优选域名,或者你自己测出来的

示例里假设:

1
2
3
Worker 名称:my-worker
你的域名:wk.example.com
优选域名:cloudflare.example.net

实际操作时换成自己的。

最终效果

做完以后,你访问的是自己的域名:

1
https://wk.example.com

请求会先走你设置的优选域名对应节点,再由 Workers 路由交给目标 Worker 处理。平时访问、API 路径、静态资源路径都应该能被同一个 Worker 接住。

第一步:先确认 Worker 正常

先别急着改 DNS。

打开 Worker 默认地址:

1
https://my-worker.<你的 workers.dev 子域>.workers.dev

能正常返回内容再继续。

如果默认地址都打不开,先修 Worker。否则后面 DNS 和路由加上去,只会把问题搞得更乱。

也可以用命令测一下:

1
curl -I https://my-worker.<你的 workers.dev 子域>.workers.dev

有正常 HTTP 状态码就行。

第二步:添加 DNS 记录

进入 Cloudflare 控制台,选中你的域名 example.com

添加一条 DNS 记录:

类型 名称 目标 代理状态
CNAME wk cloudflare.example.net 仅 DNS 解析

重点是代理状态选 仅 DNS 解析,也就是灰云。

不要开代理。

开了代理以后,Cloudflare 会按普通代理逻辑处理,请求入口就不一定是你想要的优选域名了。这个地方很多人会手滑。

添加完后,你的域名应该是:

1
wk.example.com

第三步:添加 Workers 路由

进入 Cloudflare 控制台:

1
Workers 和 Pages -> 你的 Worker -> 设置 -> 域和路由

添加一个路由:

1
wk.example.com/*

然后 Worker 选择你的项目,比如 my-worker

这里的 /* 不能漏。

不加的话,只匹配根路径,很多接口、静态资源、子路径会直接寄。

第四步:测试访问

浏览器打开:

1
https://wk.example.com

命令行测:

1
curl -I https://wk.example.com

如果 Worker 里有 API 路径,也测一下:

1
curl -I https://wk.example.com/api

不要只测首页。很多项目首页能开,接口路径没被路由接住,后面才发现。

怎么判断有没有生效

先查 DNS:

1
nslookup wk.example.com

或者:

1
dig wk.example.com

正常应该能看到它最终指向你设置的优选域名。

再测 HTTPS:

1
curl -I https://wk.example.com

如果返回的是你 Worker 的响应,就说明路由也生效了。

常见问题

1. 打开是 404

大概率是路由没配对。

检查:

1
wk.example.com/*

域名、星号、斜杠都看一下。

2. DNS 查得到,但 Worker 没反应

DNS 只是把请求带到 Cloudflare 节点。

Worker 是否执行,看的是 Workers 路由。去“域和路由”看路由有没有绑定到正确 Worker。

3. HTTPS 证书报错

先等一会。

如果一直不行,检查这个域名是不是在 Cloudflare 里正常托管,DNS 记录有没有写错。

另外,别乱用不属于你的域名。证书和路由都不是这么玩的。

4. 优选域名突然变慢

正常。

所谓优选不是固定真理,只是当前测试下来比较好。网络会变,节点也会变。

解决方法就两个:

  • 换一个优选域名。
  • 自己定期测速。

5. 免费额度够不够

普通个人项目一般够。

Cloudflare Workers 免费计划有每日请求数和 CPU 时间限制。轻量 API、跳转页、小工具通常没问题。

但如果你拿它跑大流量下载、反代一堆东西,那就别想着白嫖无限用。迟早碰限制。

路由和自定义域名怎么选

简单点:

场景 选哪个
正常绑定自己的域名 自定义域名
还要手动 CNAME 到优选域名 路由
Worker 是完整应用入口 自定义域名
想保留自己的 DNS 指向逻辑 路由

我这里用路由,不是因为它更高级,只是因为它适合“优选域名”这个玩法。

一个完整例子

假设:

1
2
3
4
Worker:my-worker
域名:example.com
入口:wk.example.com
优选域名:cloudflare.example.net

DNS:

1
CNAME  wk  cloudflare.example.net  仅 DNS 解析

Workers 路由:

1
wk.example.com/*

访问:

1
https://wk.example.com

如果能返回 Worker 内容,就完成了。

最后

这个方案适合已经有 Worker 项目,但默认入口访问不稳定的情况。

别把它想得太神。优选域名只是换入口,不会把一个烂项目变快,也不会解决 Worker 本身的代码问题。

先确认 Worker 正常,再改 DNS,再绑路由。按这个顺序来,不容易乱。

参考