Cloudflare Workers 优选教程
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 | Worker 名称:my-worker |
实际操作时换成自己的。
最终效果
做完以后,你访问的是自己的域名:
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 | Worker:my-worker |
DNS:
1 | CNAME wk cloudflare.example.net 仅 DNS 解析 |
Workers 路由:
1 | wk.example.com/* |
访问:
1 | https://wk.example.com |
如果能返回 Worker 内容,就完成了。
最后
这个方案适合已经有 Worker 项目,但默认入口访问不稳定的情况。
别把它想得太神。优选域名只是换入口,不会把一个烂项目变快,也不会解决 Worker 本身的代码问题。
先确认 Worker 正常,再改 DNS,再绑路由。按这个顺序来,不容易乱。