KernelRanch
返回文章列表

Workers 路由与自定义域:把 workers.dev 换成自己的域名

2026-11-10 #Cloudflare

部署完默认拿到的是 https://<name>.<子域>.workers.dev。它能用,但不适合对外:域名不受控、证书是共享通配、也做不了根域。

1. 两种地址的差别

维度workers.dev自定义域
域名归属Cloudflare 共享子域你自己的域名
证书*.workers.dev 通配证书你域名对应的 Universal SSL
能否用根域否是
需要域名在 Cloudflare不需要要接入并 Active
适合测试、内部工具对外站点

2. 两种配置方式

方式一:路由(Route),保留原域名,把某个路径模式交给 Worker:

routes = [
  { pattern = "example.com/api/*", zone_name = "example.com" }
]

方式二:自定义域(Custom Domain),把整个主机名绑给 Worker:

routes = [
  { pattern = "example.com", custom_domain = true }
]

区别在于:Route 是"域名照常解析,部分路径改由 Worker 处理";Custom Domain 是"这个主机名的全部请求都归 Worker",Cloudflare 会自动帮你建 DNS 记录并签证书。

3. 前提条件

域名要在同一个 Cloudflare 账号下,并且状态是 Active。满足之后,控制台的 Workers 页面才会出现"Add custom domain"入口。

如果 wrangler deploy 报找不到 zone,通常是三个原因:

  1. 域名还没接入 Cloudflare,见 49-add-domain-to-cloudflare.md。
  2. 域名的 NS 还没全网生效,Resolve-DnsName -Type NS 仍返回旧 NS。
  3. 域名在另一个 Cloudflare 账号下,跨账号不能直接绑。

4. 绑定后的验证

# 看响应头里的 cf-ray,确认请求走了边缘
(Invoke-WebRequest -Uri 'https://example.com' -UseBasicParsing).Headers['cf-ray']
# 看证书主体是否已经是你的域名
$tcp = New-Object Net.Sockets.TcpClient('example.com',443)
$ssl = New-Object Net.Security.SslStream($tcp.GetStream())
$ssl.AuthenticateAsClient('example.com')
(New-Object Security.Cryptography.X509Certificates.X509Certificate2($ssl.RemoteCertificate)).Subject

证书主体变成 CN=example.com 或包含该域名的通配,说明自定义域生效。绑定之前它是 *.workers.dev——我的示例站点实测就是 CN=hyysn.workers.dev。

5. 关掉默认域名

不想让 workers.dev 继续可访问,可以在配置里关闭:

workers_dev = false

注意这会让你少一个排错入口:自定义域没生效时,默认域名是唯一能验证代码本身没问题的地址。建议先在默认域上跑通,再关。

小结

workers.dev 是开发地址,自定义域才是站点地址。两者的差别不只是好看:根域能不能用、证书归属、是否受共享子域策略影响,都不同。

绑定失败基本只有一个原因——域名没在同一个账号下 Active。按"NS 是否生效 → 站点状态 → 账号归属"的顺序查,比在 Workers 配置里反复改快得多。

数据来源与检索时间

检索时间 2026-11-10。

来源URL对应数据
Workers 路由文档https://developers.cloudflare.com/workers/configuration/routing/routes/routes 的 pattern 写法、custom_domain 语义、自定义域需要域名在同一账号且已托管
Workers 入门指南https://developers.cloudflare.com/workers/get-started/guide/wrangler.toml 的基础字段与部署流程
DNS 记录文档https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/自定义域自动创建 DNS 记录的相关说明

核验说明

  • *.workers.dev 证书主体 CN=hyysn.workers.dev 为本机 TLS 握手实测(见 51 篇)。
  • 未做:自定义域绑定未执行(账号无 Zone 权限),第 3、4 步的控制台行为依据文档;workers_dev = false 未实际验证。