引言
要在 Amazon CloudFront 中使用通过 Amazon Route 53 注册的域名,首先需要确认 Route 53 一侧的托管区域,然后在 AWS Certificate Manager (ACM) 中签发 SSL 证书,最后在 CloudFront 中配置自定义域名。
本文以前主域名和子域名使用不同源站的架构为前提,说明如何分别将它们分配到不同的 CloudFront 分发中。
前提条件
本文基于以下前提展开。
- 主域名和子域名使用不同的源站
- 主域名和子域名分别使用不同的 CloudFront 分发进行运维
- CloudFront 分发本身以及源站的基础配置已经完成
- Route 53 的托管区域由同一个 AWS 账户管理
如果你使用相同的源站,也可以选择在一个 CloudFront 分发上配置多个备用域名 (CNAME) 的方式。不过本文不讨论这种情况。
整体流程
- 在 Amazon Route 53 中购买域名
- 确认 Amazon Route 53 自动创建的托管区域
- 在 AWS Certificate Manager (ACM) 中签发 SSL 证书
- 在 Amazon CloudFront 中配置自定义域名
- 在 Amazon Route 53 中创建主域名记录
- 在 Amazon Route 53 中创建子域名记录
- 进行验证
ACM、Route 53 和 CloudFront 的关系
在本次架构中,Amazon Route 53 负责 DNS 管理,AWS Certificate Manager (ACM) 负责签发 HTTPS 证书,Amazon CloudFront 则分别作为主域名和子域名的分发入口。
graph LR
U[用户浏览器]
R[Route 53 DNS管理]
CM[CloudFront 主域名用]
CS[CloudFront 子域名用]
OM[源站 S3 或 Web 服务器]
OS[源站 S3 或 Web 服务器]
A[ACM SSL/TLS 证书]
U -->|访问 example.com| R
U -->|访问 cdn.example.com| R
R -->|A / AAAA 别名| CM
R -->|A / AAAA 别名| CS
CM -->|通过 HTTPS 分发| U
CS -->|通过 HTTPS 分发| U
A -->|关联证书| CM
A -->|关联证书| CS
CM -->|获取内容| OM
CS -->|获取内容| OS关键点在于,Amazon Route 53 中的 DNS 记录分别引用主域名和子域名对应的 CloudFront 分发,并为每个分发配置 ACM 证书,这样就可以通过自定义域名提供 HTTPS 服务。
1. 在 Amazon Route 53 中购买域名
首先,从 AWS Management Console 打开 Amazon Route 53,购买你要使用的域名。
步骤
- 在 Amazon Route 53 控制台中打开“已注册域名”或“域名注册”
- 搜索你想注册的域名(例如:
example.com)

- 如果可用,则加入购物车并继续购买流程
- 填写联系人信息和注册年限,然后完成购买
- 打开发送到注册邮箱的确认邮件,并点击正文中的验证链接
- 主题示例:
Verify your email address.
- 主题示例:
- 在 Amazon Route 53 控制台中打开“域名”→“请求”,确认新申请域名的状态为“Successful”
购买完成后,除了域名注册之外,Amazon Route 53 也会进入可管理该域名名称服务器的状态。
2. 确认 Amazon Route 53 自动创建的托管区域
在 Amazon Route 53 中注册域名时,通常会自动创建一个同名的公共托管区域。首先确认这一状态。
步骤
- 在 Amazon Route 53 控制台中打开“托管区域”
- 确认存在与已购买域名同名的托管区域(例如:
example.com) - 确认托管区域中已自动创建以下记录
NS
SOA
如果需要,也可以一并确认 NS 记录中显示的名称服务器。
ns-xxx.awsdns-xx.com
ns-xxx.awsdns-xx.net
ns-xxx.awsdns-xx.org
ns-xxx.awsdns-xx.co.uk
3. 在 AWS Certificate Manager (ACM) 中签发 SSL 证书
为了能够通过 HTTPS 访问,需要在 AWS Certificate Manager (ACM) 中签发 SSL 证书。
步骤
- 将区域切换为 us-east-1

- 在 ACM 控制台中点击“请求证书”

- 选择“请求公有证书”

- 在完全限定域名中输入要使用的域名
- 使用主域名时:
example.com - 使用子域名时:
*.example.com - 如果希望一张证书同时覆盖两者:同时添加
example.com和*.example.com
- 使用主域名时:
- 验证方式选择“DNS 验证”
- 点击“请求”

完成 DNS 验证
- 在证书详情页面点击“在 Route 53 中创建记录”
- 如果 Route 53 托管区域由同一个 AWS 账户管理,可以自动创建 CNAME 记录
- 如果没有显示自动创建入口,则将 ACM 显示的 CNAME 记录手动添加到 Route 53
- 几分钟后,验证完成
验证完成后,状态会变为“Issued”。
4. 在 Amazon CloudFront 中配置自定义域名
证书签发完成后,将自定义域名添加到 CloudFront 分发中。
步骤
- 在 CloudFront 控制台中选择主域名对应的分发
- 点击“Edit”
- 在“Alternate domain name (CNAME)”中添加要使用的域名
- 为主域名分发添加
example.com
- 为主域名分发添加
- 在“Custom SSL certificate”中选择刚才创建的证书
- 点击“Save changes”
- 接着,对子域名对应的分发执行同样的步骤
- 为子域名分发添加
cdn.example.com - 确认证书中包含
cdn.example.com或*.example.com
- 为子域名分发添加
- 点击“Save changes”
每个分发都需要等待数分钟到约 15 分钟,直到部署完成。
5. 在 Amazon Route 53 中创建主域名记录
如果希望 example.com 也访问到 CloudFront,需要创建 A/AAAA 别名记录。
步骤
- 在 Amazon Route 53 的托管区域详情页面点击“Create record”
- 输入以下信息:
- 记录名称:留空(根域名)
- 记录类型:A - IPv4 地址
- Alias:On
- Route traffic to:
- Alias to CloudFront distribution
- 选择主域名对应的 CloudFront 分发
- 点击“Create records”
- 同样再创建一个 AAAA - IPv6 地址记录
6. 在 Amazon Route 53 中创建子域名记录
创建将子域名(例如:cdn.example.com)指向 CloudFront 的记录。
步骤
- 在 Amazon Route 53 的托管区域详情页面点击“Create record”

- 输入以下信息:
- 记录名称:子域名前缀(例如:
cdn) - 记录类型:A - IPv4 地址
- Alias:On
- Route traffic to:
- Alias to CloudFront distribution
- 选择子域名对应的 CloudFront 分发
- 记录名称:子域名前缀(例如:
- 点击“Create records”

- 同样也创建以下记录。
- 记录类型:AAAA - IPv6 地址
- 其余项与步骤 2 相同
7. 验证
完成全部配置后,在浏览器中访问以下 URL 进行验证。
https://example.com
https://cdn.example.com
如果分别显示了预期源站的内容,则说明基本路由已成功。
1. 检查 DNS
可以使用以下命令确认主域名和子域名是否指向 CloudFront。
nslookup example.com
nslookup cdn.example.com
虽然不会直接返回 CloudFront 的域名本身,但可以确认名称解析正常,并且 Route 53 的别名记录配置正确。
2. 检查 HTTPS 响应
接下来确认 HTTPS 是否正常响应。
curl -I https://example.com
curl -I https://cdn.example.com
至少应检查以下几点。
- 返回了符合预期的 HTTP 状态,例如
HTTP/1.1 200 OK或301 Moved Permanently - 响应中包含
server: CloudFront - 跳转到了预期的目标地址
3. 检查证书和备用域名
在浏览器中访问各个 URL,确认证书签发对象和锁标记。
- 访问
example.com时不会出现证书错误 - 访问
cdn.example.com时不会出现证书错误 - 不会被重定向到非预期的域名
4. 确认源站是否正确拆分
如果主域名和子域名使用的是不同源站,也要确认它们分别指向不同的分发目标。
- 在
https://example.com上显示主域名源站的内容 - 在
https://cdn.example.com上显示子域名源站的内容 - 一侧的更新不会混到另一侧
故障排查
如果无法访问:
- 确认 CloudFront 部署是否已经完成
- 确认 Route 53 中的 A/AAAA 别名记录是否配置正确
- 确认目标域名是否已经添加到 CloudFront 的“Alternate domain name (CNAME)”中
- 确认 ACM 证书中是否包含
example.com或cdn.example.com - 确认 ACM 证书状态是否为“Issued”
- 确认源站侧的 Host 头处理或 HTTPS 重定向设置没有导致问题
- 检查 DNS 传播情况(
nslookup example.com/nslookup cdn.example.com)
总结
本文介绍了如何在 Amazon CloudFront 中使用通过 Amazon Route 53 注册的域名。要点如下。
- 通过 Amazon Route 53 注册的域名通常不需要再修改名称服务器
- 如果域名支持隐私保护,可以防止个人信息暴露在 WHOIS 中
- 应先签发 ACM 证书,再在 CloudFront 中配置自定义域名
- 如果主域名和子域名使用不同源站,分别使用不同的 CloudFront 分发会更容易管理
- 主域名和子域名都需要通过各自的 A/AAAA 别名记录关联到 CloudFront
- ACM 证书必须在 us-east-1 区域中创建
通过这种配置,可以实现高速内容分发和灵活的 DNS 管理。
