AWS中如何用两个域名指向同一S3网站且不改变URL?
两个域名指向同一AWS S3静态网站的可行方案
可以实现两个域名指向同一S3静态网站且不改变URL,以下是两种核心方案,以及HTTPS场景的补充说明:
方案1:单S3桶 + Route 53别名记录
这种方案只需要维护一个S3桶,两个域名直接指向该桶的静态网站端点,是最简洁的方式。
步骤:
- 确认你的S3桶已开启静态网站托管,记录下它的网站端点(格式类似
your-bucket-name.s3-website-<region>.amazonaws.com) - 登录Route 53,进入两个域名的托管区:
- 对
mywebsite1.com和mywebsite2.com分别创建A类型记录 - 开启「别名」选项,目标选择对应的S3静态网站托管端点(注意要选网站端点,而非S3桶的REST API端点)
- 对
- 配置S3桶权限:
- 如果是公开访问的网站,在桶策略中添加允许所有用户读取桶内对象的规则;如果需要限制访问来源,可添加针对两个域名的权限规则
示例桶策略(公开访问场景):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
方案2:双S3桶 + 内容同步
如果需要每个域名对应独立的S3桶(比如后续可能需要差异化配置),可以创建两个桶并同步内容。
步骤:
- 创建两个S3桶,桶名必须分别与你的域名一致:
mywebsite1.com和mywebsite2.com(S3裸域名绑定要求桶名与域名完全匹配) - 对两个桶分别开启静态网站托管,设置相同的索引文档(如
index.html)和错误文档(如error.html) - 配置内容同步:
- 使用AWS CLI定时执行同步命令,确保两个桶内容一致:
aws s3 sync s3://mywebsite1.com s3://mywebsite2.com --delete - 或者启用S3跨区域复制(CRR),实现自动同步(如果两个桶在同一区域,也可使用同区域复制)
- 使用AWS CLI定时执行同步命令,确保两个桶内容一致:
- 在Route 53中为每个域名创建A别名记录,指向对应桶的静态网站端点
- 为每个桶配置对应的访问权限(同方案1)
补充:HTTPS访问场景
如果需要通过HTTPS访问两个域名,需要配合CloudFront实现:
- 在AWS Certificate Manager(ACM)的
us-east-1区域申请一张包含mywebsite1.com和mywebsite2.com的SSL证书 - 创建CloudFront分发,源设置为你的S3静态网站端点(而非S3桶的REST端点)
- 在分发设置中,添加两个域名作为备用域名(CNAMEs),并选择刚才申请的ACM证书
- 在Route 53中,将两个域名的A记录都设置为CloudFront分发域名的别名
- 确保S3桶的权限允许CloudFront的访问(可通过桶策略限制仅CloudOriginAccessIdentity访问)
替换现有跳转配置的步骤
如果你之前配置了mywebsite2.com跳转至mywebsite1.com,需要:
- 进入
mywebsite2.com对应的S3桶设置,关闭「静态网站托管」中的跳转配置 - 按照上述方案之一重新配置该域名的Route 53记录和S3权限
内容的提问来源于stack exchange,提问作者Abhishek Kumar
相关产品推荐
相关产品推荐

