为何指向S3重定向请求桶的CloudFront分发无法正常工作?
S3+CloudFront重定向配置问题解决方案
问题核心原因
你的CloudFront Dist WWW分发无法加载、https://www.adomain.com无法访问,根源在两处:
1. S3重定向桶的CloudFront源站协议策略错误
S3静态网站托管的URL(xxx.s3-website-xxx.amazonaws.com)仅支持HTTP协议,不接受HTTPS请求。如果CloudFront Dist WWW的源站协议策略设置为HTTPS only或Match viewer,CloudFront会用HTTPS请求S3,直接导致连接失败。而你能正常访问S3的URL,说明S3本身配置没问题,问题出在CloudFront与S3的通信协议上。
2. HTTPS访问www.adomain.com的配置缺失
- CloudFront未配置覆盖
www.adomain.com的SSL证书,或未在分发中添加该域名作为备用域名(CNAME),导致HTTPS请求因证书不匹配报错。 - Route 53指向CloudFront后,必须确保CloudFront的查看器协议策略设置为强制HTTPS,否则HTTP转HTTPS的逻辑无法生效。
修复步骤
修正
CloudFront Dist WWW的源站协议策略- 进入CloudFront控制台,找到目标分发,编辑源站配置
- 将源站协议策略改为
HTTP only - 保存后等待10-15分钟,让CloudFront完成配置部署
配置
www.adomain.com的HTTPS支持- 在CloudFront分发的「常规设置」中,添加
www.adomain.com到**备用域名(CNAME)**列表 - 使用AWS Certificate Manager(ACM)申请包含
adomain.com和www.adomain.com的证书(建议用通配符证书*.adomain.com),且证书必须部署在us-east-1区域(CloudFront强制要求) - 将CloudFront的查看器协议策略设置为
Redirect HTTP to HTTPS,确保所有HTTP请求自动重定向到HTTPS
- 在CloudFront分发的「常规设置」中,添加
验证Route 53配置
- 确认
www.adomain.com的Route 53记录类型为A或AAAA,并开启「别名」选项指向CloudFront分发域名,避免使用CNAME记录(CloudFront要求用别名)
- 确认
翻译后的CloudFront Dist WWW配置详情
- 分发ID: E1XXXXXXXXX
- ARN: arn:aws:cloudfront::XXXXXXXXX:distribution/E1XXXXXXXXX
- 状态: 已部署
- 创建时间: 2024-XX-XX XX:XX:XX UTC
- 最后修改时间: 2024-XX-XX XX:XX:XX UTC
- 价格类别: 全部区域
- AWS WAF: 未关联
- 状态代码缓存: 已启用
- 查看器协议策略: 重定向HTTP到HTTPS
- HTTP版本: HTTP/2
- 默认根对象: 未设置
- 备用域名(CNAME): 无
- SSL证书: 未配置(或仅包含主域名
adomain.com) - 源站配置:
- 源站域名:
www.adomain.com.s3-website.eu-central-1.amazonaws.com - 源站路径: 空
- 自定义源站头部: 无
- 源站协议策略: HTTPS only(此为关键错误配置)
- HTTP端口: 80
- HTTPS端口: 443
- 源站域名:
- 缓存行为(默认):
- 路径模式: *
- 查看器协议策略: 继承分发设置
- 允许的HTTP方法: GET、HEAD、OPTIONS
- 缓存策略: 默认缓存策略
- 源站请求策略: 无
- 自定义错误页面: 未配置
内容的提问来源于stack exchange,提问作者Bersan
相关产品推荐
相关产品推荐

