AWS Route 53 教程(2026 最新):域名注册、DNS 解析、健康检查与故障转移实战全流程
Meta Description: AWS Route 53 深度实战教程,含域名注册、托管区创建、A/CNAME/Alias 记录配置、加权/延迟/故障转移/地理位置四大路由策略、健康检查 CLI 实操、2026 最新价格对比表(托管区/查询/域名/健康检查)、省钱 5 招与 7 大坑,解答国内域名托管、托管区删除失败、被刷查询费等常见问题。
> 关键词: AWS Route 53、AWS 域名解析、Route 53 教程、DNS 托管区、Alias 记录、故障转移、延迟路由、健康检查、AWS 域名注册、Route 53 价格
前言
一句话结论:Route 53 是 AWS 的域名注册 + 权威 DNS + 全球流量调度三合一服务——你买一个域名、建一个托管区、把 4 组 NS 记录往域名商一改,全世界就都通过 AWS 的 Anycast 网络来解析你的域名了。
先记住这条决策口诀,全文都在解释它:
> 只做静态站或纯 DNS 解析 → 用 Cloudflare 免费版更省;已经在 AWS 上跑 CloudFront / ALB / S3,需要智能路由和高可用故障转移 → 老老实实用 Route 53,Alias 记录既免费又原生。
搞混这两条,你会在"域名解析本身不花钱"的场景下白白多付每月的托管区费用,或者在需要"主库挂了自动切到备用区域"的场景下发现免费 DNS 根本做不到。本文按「Route 53 是什么 → 核心概念 → 注册域名建托管区 → 常用解析配置 → 四大路由策略 → 价格对比表 → 省钱 5 招 → 7 大坑 → FAQ」展开。所有命令都能直接复制执行,前置条件只有两个:本机跑过 aws configure,以及账号里有 route53:* 相关权限。示例统一使用 example.com 和 us-east-1,换成你自己的即可。
一、Route 53 到底是什么?和 Cloudflare DNS 有什么区别
1.1 Route 53 的四大能力
很多人以为 Route 53 只是个"记录 A 记录的地方",其实它是三件事拼在一起的:
1. 域名注册商(Domain Registrar):直接在 AWS 上买域名,自带隐私保护(WHOIS 隐藏),和托管区自动打通。 2. 权威 DNS 服务(Authoritative DNS):全球 100+ 边缘位置 Anycast 部署,解析延迟通常个位数毫秒。 3. 流量调度引擎(Traffic Flow):按权重、延迟、地理位置、健康状态决定"这个请求该返回哪个 IP"——这才是 Route 53 真正值钱的部分,也是免费 DNS 做不到的部分。
1.2 Route 53 vs Cloudflare vs 域名商自带 DNS
| 对比维度 | AWS Route 53 | Cloudflare DNS(免费版) | 域名商自带 DNS | |---|---|---|---| | 基础费用 | 托管区 0.50 美元/个/月 + 查询费 | 免费(DNS 查询不限量) | 通常免费 | | 全球解析节点 | 100+ 边缘位置 Anycast | 300+ 城市 Anycast | 视厂商,通常较少 | | 健康检查 + 自动故障转移 | 内置,可主备自动切换 | 免费版不含(Pro 起) | 一般需付费升级 | | 延迟 / 地理位置路由 | 支持(有额外查询费) | 免费版不含 | 通常不支持 | | 与 AWS 资源集成 | Alias 原生指向 CloudFront/S3/ALB,且不计查询费 | 需手写 CNAME / 靠 flatten 处理裸域 | 视厂商 | | 域名注册 | 支持,含 WHOIS 隐私保护 | 支持(按成本价) | 支持 | | SLA | 权威 DNS 100% 可用性承诺 | 免费版无 SLA | 视厂商 | | 最适合 | 深度绑定 AWS 生态、需要智能路由与容灾 | 纯 CDN 加速、预算敏感型站点 | 极简建站 |
结论:如果你的服务器和 CDN 都在 AWS,Route 53 是"顺手就用了"的默认选择;如果只是想把域名解析加速一下、不做多区域调度,Cloudflare 免费版性价比更高。两者并不冲突——也有人用 Cloudflare 做前置 CDN、Route 53 做权威解析。
二、核心概念:托管区、记录类型、Alias 与 CNAME
2.1 托管区(Hosted Zone)
托管区就是"一个域名的解析记录容器",一个 example.com 对应一个托管区,创建后 AWS 会分配 4 组 NS(名称服务器)地址。你要做的唯一一件事:去域名注册商后台,把这 4 组 NS 替换掉原来的,域名才算真正交给 Route 53 托管。这一步没做,后面配的记录全部不生效——这是新手第一大坑。
同一个账号下,example.com 和 sub.example.com 可以共存多个托管区,也可以只用 example.com 一个托管区、靠子域记录管理全部子域名。后者更省钱:一个托管区 0.50 美元/月,10 个就是一年 60 美元。
2.2 常用记录类型速查表
| 记录类型 | 作用 | 典型写法 |
|---|---|---|
| A | 域名 → IPv4 地址 | api.example.com → 203.0.113.10 |
| AAAA | 域名 → IPv6 地址 | api.example.com → 2001:db8::1 |
| CNAME | 域名 → 另一个域名 | www → example.com(裸域不可用) |
| Alias | AWS 特有别名,指向 AWS 资源 | example.com → d111.cloudfront.net(裸域可用) |
| MX | 邮件路由 | 指向企业邮箱 / SES |
| TXT | 文本验证 | SPF、DKIM、ACM 域名验证、Google 站点验证 |
| NS | 委派托管区 | 交给 Route 53 的那 4 组地址 |
| SRV | 服务定位 | 游戏服务器、SIP 电话 |
| CAA | 限制可签发证书的 CA | 安全合规加固 |
2.3 Alias 记录:Route 53 的"隐藏福利"
Alias 是 Route 53 独有的记录类型,三条好处:
- 裸域(apex domain)也能指向 CloudFront / ALB——CNAME 在 DNS 协议层面本来是不允许出现在裸域的,Alias 绕过了这个限制。 - 查询免费——Alias 解析到 CloudFront、S3 网站终端节点、ALB/NLB 时不产生标准查询费。 - 自动跟随 IP 变化——CloudFront 后面的边缘 IP 会变,写死 A 记录迟早失效,Alias 永远指向正确的资源。
一句话:只要目标是 AWS 自己的资源,就永远用 Alias,不要用 CNAME。
三、实操一:注册域名 + 创建托管区
3.1 在 Route 53 注册域名(CLI)
域名的注册 API 只在 us-east-1 可用,这是硬性限制:
`bash
// 注意:域名注册相关 API 只在 us-east-1 提供
aws route53domains register-domain \
--region us-east-1 \
--domain-name example.com \
--duration-in-years 1 \
--admin-contact file:///tmp/contact.json \
--registrant-contact file:///tmp/contact.json \
--tech-contact file:///tmp/contact.json \
--privacy-protect-admin-contact \
--privacy-protect-registrant-contact \
--privacy-protect-tech-contact
`
contact.json 至少包含 FirstName、LastName、AddressLine1、City、State、CountryCode、ZipCode、PhoneNumber、Email 这些字段,电话必须是 +86.13800000000 这种带国家码的格式。注册成功后 Route 53 会自动为这个域名创建托管区,省掉下一步。
3.2 已有域名:手动创建托管区
`bash
// 创建公网托管区,--caller-reference 是幂等键,随便给个唯一字符串
aws route53 create-hosted-zone \
--name example.com \
--caller-reference "provision-2026-09-16" \
--query 'DelegationSet.NameServers' \
--output text
`
输出会给你 4 组 NS 地址,形如 ns-1234.awsdns-56.org。立刻去域名商后台把这 4 组替换原有 NS,然后用下面的命令确认托管区已生效:
`bash
// 查询托管区列表,确认状态
aws route53 list-hosted-zones \
--query 'HostedZones[].{Id:Id,Name:Name,Count:ResourceRecordSetCount}' \
--output table
// 从公网验证 NS 是否已经切换(可能要等几十分钟到 48 小时)
dig +short NS example.com @1.1.1.1
`
如果 dig 返回的还是域名商原来的 NS,说明委派还没更新——不用担心,继续往下配置记录,等生效即可。
四、实操二:把常见的解析都配起来
4.1 Alias 指向 CloudFront(裸域 + www 各一条)
`bash
// 用 change-batch 文件一次性提交,避免超长命令被 shell 截断
cat > /tmp/alias-cloudfront.json << 'EOF'
{
"Comment": "alias apex and www to CloudFront distribution",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z2FDTNDATAQYW2",
"DNSName": "d111111abcdef8.cloudfront.net",
"EvaluateTargetHealth": false
}
}
},
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z2FDTNDATAQYW2",
"DNSName": "d111111abcdef8.cloudfront.net",
"EvaluateTargetHealth": false
}
}
}
]
}
EOF
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch file:///tmp/alias-cloudfront.json
`
关键细节:Z2FDTNDATAQYW2 是 CloudFront 全球固定的托管区 ID,所有指向 CloudFront 的 Alias 都用它。如果是 ALB,要用该 ALB 自己所在区域的托管区 ID(在控制台"别名目标"下拉里能看到)。
4.2 一条 TXT 记录搞定 SPF 与域名验证
`bash
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "example.com",
"Type": "TXT",
"TTL": 300,
"ResourceRecords": [{"Value": "\"v=spf1 include:amazonses.com -all\""}]
}
}]
}'
`
TXT 值里的引号要转义后成对出现,这是 CLI 最常见的报错来源。ACM 证书的 DNS 验证同理——如果域名托管在 Route 53,控制台里点一下"创建记录"就能一键写入 CNAME,不用手抄那串随机值(详见文末延伸阅读的 ACM 实战篇)。
4.3 别忘了 MX:让域名能收邮件
邮件不走 A 记录、不走 CNAME,只认 MX。把工作邮箱的 MX 值填进去,TTL 设 3600 即可。同一台邮件服务商通常给 2~3 条 MX,优先级数字越小越优先。
五、实操三:四大路由策略,Route 53 真正的价值所在
| 路由策略 | 解决什么问题 | 典型场景 | 额外查询费 | |---|---|---|---| | 简单路由 Simple | 一条记录对应一个资源 | 单机网站、测试环境 | 无 | | 加权路由 Weighted | 按比例分流流量 | 灰度发布、A/B 测试 | 无 | | 延迟路由 Latency | 就近返回延迟最低的区域 | 多区域部署、全球用户 | +0.20 美元/百万次 | | 故障转移 Failover | 主挂自动切备用 | 高可用、异地容灾 | 无 | | 地理位置 Geolocation | 按国家/大洲返回不同结果 | 合规隔离、本地化 | +0.30 美元/百万次 | | 地理邻近 Geoproximity | 按物理距离 + 偏移量调度 | 精细流量倾斜 | +0.30 美元/百万次 | | 多值回答 Multivalue | 返回多个健康 IP 做客户端负载 | 无 ELB 的小规模负载均衡 | 无 | | 基于 IP 路由 | 按客户端 IP 段分流 | 运营商定向优化 | +0.20 美元/百万次 |
5.1 故障转移:先建健康检查,再配主备记录
`bash
// 第一步:为前端 API 创建一个每 30 秒探测一次的 HTTPS 健康检查
aws route53 create-health-check \
--caller-reference "hc-api-2026-09-16" \
--health-check-config '{
"Type": "HTTPS",
"FullyQualifiedDomainName": "api.example.com",
"Port": 443,
"ResourcePath": "/healthz",
"RequestInterval": 30,
"FailureThreshold": 3,
"EnableSNI": true
}'
`
记下返回的 HealthCheck.Id,然后提交主备两条记录:
`bash
// 第二步:主记录用 FAILOVER_PRIMARY 并绑定健康检查,备用记录用 SECONDARY
// SetIdentifier 是路由策略的必填项,主备用不同值区分
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "api.example.com",
"Type": "A",
"SetIdentifier": "primary-tokyo",
"Failover": "PRIMARY",
"HealthCheckId": "abcdef01-2345-6789-abcd-ef0123456789",
"TTL": 60,
"ResourceRecords": [{"Value": "203.0.113.10"}]
}
},
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "api.example.com",
"Type": "A",
"SetIdentifier": "standby-singapore",
"Failover": "SECONDARY",
"TTL": 60,
"ResourceRecords": [{"Value": "198.51.100.20"}]
}
}
]
}
`
三条经验:TTL 一定要压到 60,否则客户端缓存会让你切换后还在打旧 IP;健康检查路径要返回 200,返回 301/302 会被判定不健康;备用记录不绑健康检查,否则主备同时不健康就没有兜底了。
5.2 加权路由:灰度发布的正确姿势
`bash
// 让 10% 的流量打到新版本(东亚区域),90% 留在老版本
// 两条记录 Name/Type 相同,靠 SetIdentifier 与 Weight 区分
{
"Name": "app.example.com",
"Type": "A",
"SetIdentifier": "canary-v2",
"Weight": 10,
"TTL": 60,
"ResourceRecords": [{"Value": "203.0.113.77"}]
}
`
把 Weight 从 10 慢慢调到 50、100,观察监控指标再全量。这是 Route 53 里最省钱也最实用的一招——加权路由不收额外查询费。
六、2026 价格对比表
| 计费项 | 参考价(美元) | 说明 | |---|---|---| | 托管区(Hosted Zone) | 0.50 / 个 / 月 | 前 25 个,第 26 个起 0.10 / 个 / 月 | | 标准 DNS 查询 | 0.40 / 百万次 | 每月前 10 亿次;超出部分 0.20 / 百万次 | | 延迟路由查询 | 0.60 / 百万次 | 超出 10 亿次后 0.30 / 百万次 | | 地理位置 / 地理邻近路由查询 | 0.70 / 百万次 | 超出 10 亿次后 0.35 / 百万次 | | Alias 查询(指向 CloudFront/S3/ALB) | 免费 | 不产生标准查询费 | | 健康检查(AWS 终端节点) | 0.50 / 个 / 月 | 外部终端节点 0.75 / 个 / 月 | | 健康检查加项 | 各 +0.50 ~ 1.00 / 月 | HTTPS、字符串匹配、延迟测量各计一项 | | 健康检查快检(10 秒间隔) | +1.00 / 个 / 月 | 默认 30 秒不额外收费 | | 域名注册 .com | 约 12 ~ 15 / 年 | 含 WHOIS 隐私保护 | | 域名注册 .io | 约 45 ~ 55 / 年 | 溢价 TLD 波动较大 | | DNSSEC 签名 | 0.40 / 百万次查询 + KMS 非对称密钥约 1 / 月 | 默认关闭 | | Resolver 终端节点 | 约 0.125 / ENI / 小时 | 混合云 DNS 解析用 |
算一笔账:一个中小型站点(1 个域名 + 1 个托管区 + 每月 200 万次查询 + 2 个健康检查),月成本约 0.50 + 0.80 + 1.00 ≈ 2.3 美元,一年不到 30 美元。对比被刷的场景:如果不做防护被恶意刷到 10 亿次标准查询,光 DNS 费用就是 400 美元/月——所以查询费虽然不是大头,但一定要配监控告警。
七、省钱 5 招
1. 能用 Alias 就别用 CNAME:指向 AWS 资源时 Alias 查询费为 0,量大之后省下的钱非常可观。 2. 一个域名只开一个托管区:子域用记录管理,不要每个子域都建托管区,省下 0.50 美元/个/月。 3. 稳定记录把 TTL 提上去:不常变的 A/MX 记录 TTL 设 3600~86400,直接砍掉一大截查询次数。 4. 健康检查不要滥用:每个至少 0.50 美元/月,加上 HTTPS、字符串匹配、快检三项就是 3 美元/月,只为关键入口(支付、登录、API)配置。 5. 清理僵尸托管区:换过域名、项目下线的托管区记得删,删不掉说明里面还有记录——顺手清掉,一年能省几十美元。
八、7 大常见坑
1. 裸域写 CNAME:DNS 协议不允许,Route 53 会直接报错。裸域必须用 Alias 或直接写 A 记录。
2. 忘了改域名商的 NS:托管区建好了、记录也配了、就是不生效——99% 是这个原因。用 dig +short NS 你的域名 @1.1.1.1 一眼看出真相。
3. 切换前不降 TTL:日常 TTL 设 86400(一天),做主备切换时要等一整天客户端才更新。切换前 24 小时先把 TTL 降到 60。
4. 健康检查指向会返回 3xx 的路径:Route 53 只把 2xx 视为健康,跳转页面会被判定为故障,导致误切换。
5. Alias 指向 S3 时选错目标类型:控制台里必须选 "Alias to S3 website endpoint",且 S3 桶名要和域名完全一致(www.example.com 桶配 www.example.com 记录),选成 REST endpoint 就会 403。
6. 托管区删不掉:非空托管区无法删除,必须先把里面的记录全删(NS 和 SOA 两条系统记录会自动保留,不用管)。
7. DNSSEC 启用后把 KMS 密钥删了:签名密钥属于 KMS 非对称密钥,删除或禁用后域名解析会在 TTL 过期后全线失败。启用前务必确认密钥有保护策略、有备份。
九、常见问题 FAQ
Q: Route 53 有免费套餐吗? A: 没有传统意义上的免费层。域名注册和托管区都是按量付费,唯一"免费"的部分是 Alias 记录指向 CloudFront / S3 / ALB 时的查询费为 0,以及 AWS 免费套餐账号首年可能覆盖的部分资源。整体成本很低(个人站约 2 美元/月),但要从第一天就配好预算告警。
Q: 国内注册的域名能托管到 Route 53 吗?
A: 可以。任何域名只要你能修改 NS,就能把解析权交给 Route 53。但要注意两点:一是 .cn 等部分后缀在 Route 53 无法注册,只能"托管"不能"购买";二是国内域名需完成实名/备案要求,且把 NS 指向境外可能影响国内访问速度与合规,建议配合国内 DNS 或使用双解析。
Q: 托管区删除失败提示 "HostedZoneNotEmpty" 怎么办?
A: 托管区里还有记录。用 aws route53 list-resource-record-sets --hosted-zone-id <ID> 列出全部记录,把非 NS/SOA 的记录逐条 DELETE,再用 delete-hosted-zone 删除。注意 DELETE 时必须原样传回该记录的完整内容(包括 TTL 和值),否则会被拒绝。
Q: Route 53 和 Cloudflare 到底选哪个? A: 服务器和 CDN 都在 AWS、需要健康检查/延迟路由/自动故障转移 → Route 53;只是想让解析快一点、想省掉托管区费用、需要免费 WAF 和 DDoS 防护 → Cloudflare 免费版。也可以组合:Cloudflare 做前置 CDN,Route 53 做权威解析。
Q: 为什么我的 DNS 记录改了没立刻生效?
A: DNS 是靠 TTL 缓存分发的。旧 TTL 没到期前,各地递归服务器拿到的还是老记录。常规记录建议 TTL 300~3600;涉及切换的记录提前降到 60。另外浏览器、操作系统、公司内网 DNS 都各有一层缓存,必要时换网络或用 dig @8.8.8.8 直接验。
Q: 查询费会不会被恶意流量刷爆?
A: 会,所以要做三件事:一是给 Alias 指向 CloudFront 让边缘缓存吸收流量,二是配 CloudWatch 告警监控 QueryCount 指标并设预算告警,三是域名解析不要暴露过多子域(子域枚举会放大查询量)。真的被攻击时可用 AWS Shield + Route 53 查询日志定位来源。
Q: 域名续费和转移要注意什么? A: Route 53 注册的域名默认开启自动续费,建议保持开启避免域名过期被抢注;注册后 60 天内不能转出(ICANN 规则),转出前需要先在控制台获取授权码(Auth Code)。另外 Route 53 的 WHOIS 隐私保护是免费的,某些 TLD 不支持该功能,注册前留意提示。
> ⚠️ 文中价格为 2026 年参考价,实际费用随区域和官方调价变动,请以 AWS 官网为准。
> 🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。
延伸阅读:
- AWS S3 + CloudFront 静态网站托管实战:从 0 搭建全球加速站点 - AWS ACM 免费 SSL 证书实战:申请、DNS 验证与自动续期 - AWS Global Accelerator 全球加速器实战 - AWS ELB 负载均衡实战:ALB/NLB 选型与配置 - AWS 免费套餐注册指南:避免被扣费的 5 个关键设置
> 本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多