12k
All articles

开发者购买域名前应该知道的事

了解注册商、DNS 服务商和主机的区别,核查域名续费与转移费用,并设置 Cloudflare 及网站所需的 DNS 记录。

OpenReplay Team
OpenReplay Team
开发者购买域名前应该知道的事

购买域名实际上意味着要选择三样相互独立的东西:每年向你收费的注册商(registrar)、负责响应该域名查询的 DNS 服务商,以及承载网站的托管平台。这三者不必是同一家公司。

结账页面却让人感觉这只是一次性购买:一个便宜的价格,一个按钮,而那个副业项目连 README 都还没写。一年后,续费邮件如期而至,根域名(apex domain)依然无法解析,你这才发现自己手里的域名比本季度有过提交的仓库还多。

本指南将介绍如何购买域名才能避免这些意外。内容包括:三种角色分别是什么、付款前需要排查的定价与转移陷阱、如何将 DNS 迁移到 Cloudflare、Vercel、Netlify 和 Cloudflare Pages 所需的 DNS 记录,以及一条精简域名收藏的规则。

核心要点

  • 在注册商处设置的域名服务器(nameserver)决定了哪家 DNS 服务商对你的域名具有权威性,因此迁移 DNS 意味着更换域名服务器,而不是更换注册商。
  • 结账时的价格往往是首年促销价。续费价格才是此后每年的实际成本,而在许多注册商和新顶级域名(TLD)上,续费价格要高得多。
  • 标准 DNS 不允许在域名的根(apex)上设置 CNAME,因为根域名必须同时持有 NS 和 SOA 记录,而 CNAME 不能与任何其他记录共用同一名称。
  • Cloudflare Registrar 以成本价销售域名,但在那里注册的每个域名都必须使用 Cloudflare 的域名服务器。
  • 在根域名和 www 之间选择一个作为规范主机名(canonical hostname),并将另一个重定向到它。

注册商、DNS 服务商和托管平台有什么区别?

注册商持有你的域名注册并向你收费;DNS 服务商负责响应针对你的记录的查询;托管平台负责提供实际的文件。 注册商由 ICANN 认证,它们向运营各个 TLD 的注册局(registry)注册域名。另外,你在注册商处设置的域名服务器会告诉全世界:哪家 DNS 服务商对该域名具有权威性。

角色职责在哪里更改
注册商持有域名注册,收取续费转移到另一家注册商
DNS 服务商响应针对你的记录的查询域名服务器,在注册商处设置
托管平台提供网站服务DNS 记录,在 DNS 服务商处设置

你可以查看任意域名由谁负责响应:

# Which nameservers are authoritative for this domain?
dig +short NS example.com

如果需要复习各类记录类型,请参阅 DNS 基础指南。下文均假设你已了解 A、CNAME 和 NS 记录的作用。

如何购买域名而不落入常见陷阱

购买之前,请检查四件事:续费价格、该 TLD 的定价方式、转移锁定期,以及是否包含 WHOIS 隐私保护。 每项大约只需三十秒,比结账页面上的彩带动画还短。

看续费价格,而不是结账价格。 首年促销在各家注册商中都很常见,而续费往往贵得多。付款前,请在定价页面或购物车中找到续费价格那一行。

看 TLD 的定价方式。 .com 和 .net 的价格受其注册局协议的上限约束,因此涨幅有限且可预期。许多新通用顶级域名(gTLD),以及一些深受开发者欢迎的国家和地区代码顶级域名(ccTLD,例如 .io),续费可能很贵,而且价格由其注册局决定。注册局溢价域名(registry-premium domain)通常每次续费都保持溢价价格;二级市场(aftermarket)域名通常只需一次性支付较高价格,之后按标准价格续费。对于副业项目来说,溢价域名很少物有所值。

看转移锁定期。 根据 ICANN 现行的《转移政策》(Transfer Policy),在你注册 gTLD 域名后的 60 天内,注册商可以拒绝将其转移到另一家注册商。ICANN 的 GNSO 理事会于 2025 年批准的《转移政策》修订一旦生效,将以固定的 30 天锁定期取而代之。ccTLD 则自行制定规则。根据现行政策,更改注册人的姓名、组织或电子邮件同样会触发 60 天锁定期。部分注册商允许你选择退出该锁定,而上述政策修订也将取消这一锁定。

看 WHOIS 隐私保护。 许多注册商免费提供,但也有一些每年单独收费。在被购物车总价迷惑之前,先确认你的注册商属于哪一种。

如何将 DNS 迁移到 Cloudflare?

要将 DNS 迁移到 Cloudflare,先将域名添加到 Cloudflare,然后在注册商处将域名服务器替换为 Cloudflare 分配的两个域名服务器,然后等待生效。 域名注册仍保留在原处,迁移的只是权威 DNS。

  1. 在 Cloudflare 中添加站点。你会获得两个分配的域名服务器。
  2. 检查导入的记录。自动扫描可能会遗漏已有的记录。
  3. 如果启用了 DNSSEC,请先在注册商处将其关闭。如果在 DNSSEC 仍处于启用状态时切换域名服务器,域名可能会无法解析。
  4. 在注册商处替换域名服务器。
  5. 等待生效。根据 TTL 和解析器缓存的不同,所需时间从几分钟到许多小时不等。

如果暂时还没生效,可能是你的机器缓存了旧的应答。可以直接查询公共解析器,并参阅如何在 Chrome 中清除 DNS 缓存:

# Skip your local cache and ask public resolvers directly
dig +short NS example.com @1.1.1.1
dig +short NS example.com @8.8.8.8

你应该能看到 Cloudflare 为你的区域(zone)分配的两个域名服务器。

开发者将 DNS 迁移到 Cloudflare 主要有三个原因:免费且快速的权威 DNS、所有套餐均支持根域名 CNAME 展平(CNAME flattening),以及在同一个控制台中管理 DNS、Pages 和 CDN(关于该网络与其他方案的对比,请参阅现代 Web 应用的最佳 CDN)。

Cloudflare Registrar 以成本价销售域名,既支持新注册(通过 Cloudflare 控制台),也支持转入。在那里注册的每个域名都必须使用 Cloudflare 的域名服务器,因此如果你想使用其他 DNS 服务商,就必须将域名转移到另一家注册商。

为什么根域名不能设置 CNAME?

www 可以设置为指向你所用平台的 CNAME,但裸根域名(example.com)不行。 根据 RFC 1034 §3.6.2 和 RFC 2181 §10.1,CNAME 不能与任何其他记录共用同一名称,而每个区域的根都必须持有 NS 和 SOA 记录。因此,以下配置是无效的:

; NOT allowed by standard DNS
example.com.   IN  NS     ns1.example-dns.net.
example.com.   IN  CNAME  <platform-target>.

要将根域名指向 Vercel 或 Netlify,你有三种选择:

; www points at the platform with a CNAME
www.example.com.   3600  IN  CNAME  <your-project-target-from-platform-dashboard>.

; Pick ONE for the apex:
; Option A: A record to the IP your platform documents
example.com.       3600  IN  A      192.0.2.10   ; replace with the platform's documented IP

; Option B: ALIAS / ANAME (provider-specific, not a standard record type)
; example.com.     ALIAS  <platform-target>.

; Option C: On Cloudflare, create a CNAME at "@" and Cloudflare flattens it

对于 Vercel,其知识库建议在根域名上使用选项 A,或者改为将域名的域名服务器交给 Vercel 管理。Vercel 也列出了默认 DNS 值,但许多项目会被分配专属的值,因此请从你的域名设置页面复制。Netlify 的域名设置页面同样会列出其专属目标。ALIAS 和 ANAME 记录能让根域名表现得像 CNAME 一样,但只有部分 DNS 服务商提供这类记录。

Cloudflare Pages 的机制有所不同。若要在 Pages 上使用根域名,该域名必须是与 Pages 项目位于同一账户下的 Cloudflare 区域,并且其域名服务器已指向 Cloudflare。在外部服务商处设置 A 记录或 ALIAS 是行不通的。子域名则只需在你现有的 DNS 服务商处添加一条 CNAME 即可。

最后,在根域名和 www 之间选择一个作为规范主机名,并将另一个重定向到它,以便所有访问者、Cookie 和搜索结果都统一落到同一个地址上。Vercel 的文档建议将 www 设为主主机名,并通过重定向将裸域名指向它。检查重定向是否生效:

# Expect a 301/308 from the non-canonical host to the canonical one
curl -sI http://example.com | grep -i -E '^(HTTP|location)'

六十个域名,三个项目

每个域名每年都要续费,无论上面是否部署了任何东西,因此闲置域名的收藏留得越久,花的钱就越多。 那个你在凌晨一点为一个从未动工的 CLI 工具买下的域名,至今仍在向你收费。

给自己定一条规则并严格执行。一种做法是:如果仓库一年内没有任何提交,就让对应的域名过期。每年一次,从注册商控制台导出你的域名及其到期日期,并与你的仓库逐一核对。只为那些你会舍不得的域名开启自动续费,也就是那些有在线项目、电子邮件或外部入站链接的域名。

如果你打算把域名集中到同一家注册商,请记住每次转移都会触发新的锁定期,因此无法让域名在注册商之间快速来回转移。请围绕续费日期规划迁移。

总结

一个域名涉及三种角色:注册商向你收费,域名服务器决定由谁响应 DNS 查询,DNS 记录则指向你的托管平台。把这三者区分清楚,大多数配置问题都会更容易理清,包括根域名 CNAME 规则。下次冲动购买之前,先看看续费价格。然后打开你的注册商控制台,把所有你不会舍不得的域名的自动续费都关掉。

常见问题

如果域名在续费前过期了,会发生什么?

对于大多数 gTLD,过期域名首先会进入自动续费宽限期(auto-renew grace period),在此期间你仍可在注册商处续费。如果注册商随后将其删除,ICANN 的《过期注册恢复政策》(Expired Registration Recovery Policy)要求设置 30 天的赎回宽限期(Redemption Grace Period)。在此期间,DNS 解析会被停用,转移也会被禁止。在这一窗口期内恢复域名,通常需要额外支付一笔赎回费用。赞助型 gTLD 和 ccTLD 则遵循各自的规则。

将域名转移到另一家注册商时,剩余的注册时长会丢失吗?

不会。对于 .com、.net 和 .org 等大多数 gTLD,转移会在当前到期日期的基础上增加一年,而不会重新开始计算注册期限。大多数注册局将注册期限上限设为 10 年,因此如果增加的一年会超出该上限,转移可能会被拒绝。在续费已过期域名后的 45 天内进行转移,可能不会增加这一年。ccTLD 则自行制定规则。

CNAME 展平与 ALIAS 或 ANAME 记录有什么区别?

两者解决根域名问题的方式相同:由权威 DNS 服务商自行解析目标主机名,并以 A 和 AAAA 记录作答,因此解析器永远不会看到 CNAME。Cloudflare 称之为 CNAME 展平,Route 53 称之为别名记录(alias record),其他服务商则称之为 ALIAS 或 ANAME。由于查询是由服务商完成的,基于地理位置路由的目标返回的地址,可能是按服务商所在位置而非访问者所在位置选择的。

更改域名服务器会触发 60 天转移锁定期吗?

不会。ICANN 的注册人变更锁定仅在注册人的姓名、组织或电子邮件地址发生变更时才适用,而域名服务器并不属于注册人数据。将域名指向 Cloudflare 或任何其他 DNS 服务商,不会改变注册商、域名注册和到期日期。对于 gTLD,常见的转移限制情形是:新注册、近期刚完成转移,或上述注册人字段发生了变更。

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.