Cloudflare Workers 一种不需要路由的优选技巧

Hoyue 2026-07-11 16:40 1

最近在自建 Nodewarden 密码库的时候,想要给绑定在 Cloudflare Workers 上的域名加速一下,误打误撞试出了一个邪修的优选方法,不需要添加 Workers 路由,也可以给绑定在 Cloudflare Workers 的域名 按地区优选。感觉相比于 Workers 路由的方法这种方法像是卡了 bug,但是能更加精细分流了,也能防止优选 CNAME 投毒(如果有重要内容的话,虽然我下面也是用的 CNAME 举例 ^-^)。


原文在我的博客文章最后一节中:NodeWarden —— 自建于 Cloudflare Workers 的开源密码管理器部署和优选加速。




大家都知道在大陆访问 Cloudflare Workers 生成的 *.workers.dev 速度感人,有些地方还会被阻断。如果绑定自己的域名,奈何 Cloudflare Workers 只支持绑定在 Cloudflare 上的 (子) 域名,直连速度上几乎没有什么改变,只是阻断变少了。


我们知道目前主流的加速访问 Cloudflare 托管域名的方法就是使用优选。优选一般作用于可以分地区/运营商解析的 DNS 服务上,可惜 Cloudflare 不支持分地区解析。如果要对某个子域名分地区解析,则 可以添加该子域名的 NS 记录到支持的 DNS 解析服务上。后面以 DNSPod 免费版为例。


然而可以发现,在 Workers 处绑定了域名之后,就无法给该子域名添加 NS 记录了,如图:



我在自己使用 Workers 服务的时候发现了个小技巧,可以绕过这个限制。



  1. 首先删除 在 Workers 绑定的子域名,并为该子域名添加上 DNSPod 的 NS 记录。




首次在 DNSPod 绑定该子域名还需要添加一个 TXT 记录作为验证:



等待一下 DNS 的解析,在 DNSPod 处检测到生效即可。



  1. 接下来在 DNSPod 中 先添加一个指向 Workers 应用域名的 CNAME,并设置路线为 默认(不先添加默认的话 DNSPod 就报错了)。



然后就是给境内添加优选了,我这里直接使用最简单的 CNAME 一个优选域名的方法作为演示,当然你还可以自行测试优选 IP,手动为不同运营商添加 A 记录,这样可以更加精细化分流。添加一条指向优选域名的 CNAME,并设置路线为 境内。我这里使用的是 微测网 提供的优选地址:*.cloudflare.182682.xyz




  1. 回到 Cloudflare Workers 域管理,重新添加该域名到 Workers 里。去到该域名的 DNS 页面刷新,就可以发现 NS 记录和这条绑定共存了。



此时,等待一会看看自己域名是否正常访问即可。Cloudflare 检测到你的子域名走的默认路线,是 Workers 域名的 CNAME,绑定没问题。而在境内则走的是优选的 Cloudflare 线路,同样也是 Cloudflare 的 CDN,故访问没问题。


来到测速网站测试发现,该域名走的优选路线,延迟低了很多。



DNS 查询发现分流优选成功了。





感觉这种方法是 Cloudflare 控制台的 bug,本身原理好像也没问题。如果有什么写得不对的地方欢迎各位佬指出。如果有佬愿意交换友链的欢迎 留言,我后面应该也会更新一点别的各种折腾的记录 ^-^

最新回复 (11)
  • Tairitsu 07-11 16:51
    1

    其实是因为cloudflare只会检测海外(比如这里的默认路线)有没有指向它给的cname,国内的有没有指向它检测不到,所以pages也可以搭配分线路解析来优选

    但是我不太理解为什么worker项目不直接使用worker路由呢?应该是更方便的也不需要第三方dns

  • Hoyue 楼主 07-11 17:00
    2

    pages 都不限制是不是托管在 Cloudflare 上的域名,直接优选就好了。使用 Workers 路由确实方便,但是不支持分运营商解析吧。我之前想给一些访问要求高一些服务加不同运营商解析的时候,还是习惯使用 DNSPod 这种,可以自己分运营商 A 记录,防止 CNAME 投毒吧。我这也只是分享个另类的方案哈哈哈,没有对比其他方法好坏的意思,反正最后能加速都是好方法 ^-^

  • Tairitsu 07-11 17:08
    3

    pages实际上和saas差不多,都是会检测cname有没有指向给的那个域名的,所以不能直接把cname填优选域名;

    然后



    使用 Workers 路由确实方便,但是不支持分运营商解析吧



    其实可以再开一个子域专门用来给cf优选,然后ns解析给dnspod,然后再把worker路由要用的那个子域名cname指向给dnspod的那个子域名

  • 花季无言 07-15 14:59
    4

    都是会检测cname有没有指向给的那个域名的,



    我现在怎么直接改pages的cname然后一开始可以用,然后过个几分钟就1000报错了?

  • Hoyue 楼主 07-15 15:03
    5

    回 Cloudflare pages 绑定域名那里看看是不是被暂停了?刚才检查了一下没发现什么问题呢

  • 花季无言 07-15 15:05
    6

    是的他提示暂停,说cname没指向pages域名,这个有啥办法解决。workers这样改好像就不会校验

  • Hoyue 楼主 07-15 15:10
    7

    域名 DNS 是托管在 Cloudflare 上的吗,我是在 DNSPod 上的,分地区解析,默认为 pages 的 CNAME,境内走优选,这样没问题。因为 pages 好像是要求显式检查 CNAME 的。或者是像之前那位佬说的,用一个专门的子域名托管在 DNSPod 上做分地区解析,然后 CNAME 到这个子域名应该也可以

  • 花季无言 07-15 15:15
    8

    我知道了,那还是得迁出去。cf tunnel是不是同理有这个检测

  • Muse 07-15 15:18
    9

    在对于Cloudflare Workers 部署密码管理器是不错的想法,此类项目 Nodewarden 安全性有待验证,并且需要做进一步的安全审计

  • Hoyue 楼主 07-15 15:35
    10

    毕竟 Cloudflare 在境外的延迟和速度还是挺好的,分地区解析还是好点吧。tunnel 的我还没测过,好像它要求一定是托管在 cf 上的域名才可以

  • Hoyue 楼主 07-15 15:39
    11

    所以多多备份和关注社区更新了,还有关键账户加上多因素认证,只能说是降低点暴露的概率 ^-^

* 帖子来源Linux.do
返回