AWS S3+CloudFront托管网站:裸域指向现有分发的配置问询
解决裸域指向CloudFront托管网站的问题
首先明确说:完全不需要创建新的S3存储桶或CloudFront分发,只需要对现有配置做一些调整就能让裸域(company.com)和www域名指向相同内容,解决HTTPS访问的问题。下面分两种常用方案说明:
方案一:直接扩展现有CloudFront分发(推荐)
这是最简洁高效的方案,利用CloudFront对Apex域名(裸域)的原生支持,步骤如下:
- 更新CloudFront分发的CNAME列表:编辑你现有的CloudFront分发,在「Alternate Domain Names (CNAMEs)」中添加
company.com(裸域),同时保留www.company.com。 - 确保SSL证书覆盖双域名:你的CloudFront分发使用的SSL证书必须同时包含
www.company.com和company.com。如果之前只有单域名证书,需要在AWS Certificate Manager(ACM)中重新申请包含双域名的证书(注意:CloudFront要求证书必须部署在us-east-1(弗吉尼亚北部)区域)。 - 配置DNS的Alias记录:
- 若使用AWS Route 53:给裸域创建一条
A类型(或AAAA类型,支持IPv6)的Alias记录,目标直接选择你的CloudFront分发(Route 53会自动识别并关联)。 - 若使用非AWS DNS服务商:确认服务商支持「CNAME flattening」或「ANAME/ALIAS」记录类型,将裸域指向你的CloudFront分发域名(比如
d123456abcdef.cloudfront.net)。这里不能用普通CNAME记录,因为DNS规则不允许Apex域名使用CNAME。
- 若使用AWS Route 53:给裸域创建一条
配置完成后,裸域的HTTPS请求会直接路由到现有CloudFront分发,和www域名共享相同的S3内容,完美解决之前的HTTPS访问问题。
方案二:用S3重定向桶配合CloudFront(适合特殊场景)
如果因为某些限制无法给现有CloudFront添加裸域CNAME,也可以采用这个方案,但需要额外维护少量资源:
- 创建一个名称和裸域完全一致的S3存储桶
company.com,开启静态网站托管,设置重定向规则将所有请求指向https://www.company.com。 - 给这个重定向桶创建新的CloudFront分发(因为S3静态网站端点本身不支持HTTPS),配置CNAME为
company.com,并使用覆盖双域名的SSL证书。 - 在DNS中给裸域创建Alias记录指向这个新的CloudFront分发。
不过这个方案需要额外维护一个CloudFront分发,不如方案一高效,所以优先推荐方案一。
为什么之前的重定向方案失效?
你之前遇到https://company.com无法访问的问题,大概率是因为直接将裸域DNS指向了S3的静态网站端点——S3静态网站托管本身不支持HTTPS,所以HTTPS请求会因证书缺失而报错。必须通过CloudFront来处理HTTPS流量,这也是所有可行方案都依赖CloudFront的核心原因。
内容的提问来源于stack exchange,提问作者Swordfish
相关产品推荐
相关产品推荐

