AWS S3+CloudFront+Route53架构下https://www.example.com跳转失效求助
排查HTTPS访问www.example.com失败的问题
我之前处理过好几个类似的案例,结合你的场景(http://www.example.com能正常跳转,但https://www.example.com不行),核心问题大概率出在CloudFront的配置上,咱们一步步来梳理:
1. 检查CloudFront的SSL证书绑定
这是最常见的原因:
- 首先确认你有没有为
www.example.com单独配置CloudFront分配,或者它和example.com共用同一个分配?- 如果是共用一个分配:检查分配的Alternate Domain Names (CNAMEs) 是否同时包含
example.com和www.example.com,并且Custom SSL Certificate选择的是你那覆盖*.example.com和example.com的ACM证书。 - 如果是两个独立分配:务必确认
www.example.com对应的CloudFront分配也绑定了正确的ACM证书——很多人容易只给主域名分配绑定证书,忽略了www的分配。
- 如果是共用一个分配:检查分配的Alternate Domain Names (CNAMEs) 是否同时包含
- 重点提醒:CloudFront只支持us-east-1(弗吉尼亚北部)区域签发的ACM证书!如果你的证书是在其他区域(比如us-west-2)创建的,哪怕覆盖了域名,CloudFront也无法使用,直接导致HTTPS请求失败。
2. 验证Route53 DNS记录的正确性
虽然http://www能正常跳转,但还是要确认:
www.example.com的A/AAAA记录是**别名(Alias)**指向对应的CloudFront分配域名,而不是直接指向S3存储桶的域名。S3本身不支持自定义域名的HTTPS访问(除非通过CloudFront),如果直接指向S3,HTTPS请求必然失败。- 确保DNS记录已经生效,可以用
nslookup www.example.com或者dig www.example.com命令验证返回的是不是CloudFront的IP地址。
3. 检查CloudFront的重定向规则配置
你的http://www能跳转到https://example.com,说明HTTP到HTTPS的重定向没问题,但HTTPS的www请求没被处理:
- 查看CloudFront分配的Behavior设置:除了把
Viewer Protocol Policy设为Redirect HTTP to HTTPS,还需要添加额外的重定向逻辑,处理HTTPS的www请求。- 最简单的方式是用CloudFront Functions或者Lambda@Edge编写一个简单的函数,当请求的Host头是
www.example.com时,返回301重定向到https://example.com。 - 如果你是用S3静态网站托管的重定向规则,要确保CloudFront的行为设置里Forward Headers包含
Host头,这样S3才能识别请求的域名并执行重定向。
- 最简单的方式是用CloudFront Functions或者Lambda@Edge编写一个简单的函数,当请求的Host头是
4. 确认证书的有效性
虽然你说证书覆盖了两个域名,但还是要快速检查:
- 登录ACM控制台,确认证书状态是Issued,并且
www.example.com在证书的Subject Alternative Names列表里。 - 检查证书的有效期,确保没有过期。
按照上面的步骤排查,基本就能定位问题了——大概率是CloudFront的证书绑定区域不对,或者www的分配没绑定正确的证书。
内容的提问来源于stack exchange,提问作者Rodolph55
相关产品推荐
相关产品推荐

