已配置CloudFront与S3,如何让dev.abc.com仅通过HTTPS访问?
解决dev.abc.com仅HTTPS访问的方案
针对你遇到的S3网站终端节点无法让CloudFront用HTTPS通信的问题,有两种可行方案:
方案一:改用S3 REST API端点作为CloudFront源(推荐端到端HTTPS)
这个方案能实现查看器到CloudFront、CloudFront到S3的全链路HTTPS:
- 关闭S3桶的静态网站托管配置(如果依赖该功能的索引/错误页面,后续在CloudFront里配置)
- 在CloudFront分发的源设置中,选择你的S3桶时,使用S3 REST API端点(不是带
website后缀的网站端点) - 配置CloudFront的源访问控制(OAC),授权CloudFront访问S3桶(替代传统的桶策略,是当前AWS推荐的方式)
- 在CloudFront的缓存行为设置里,将源请求协议设置为
HTTPS only,确保CloudFront仅用HTTPS和S3通信 - 确认CloudFront的默认根对象设置为你的首页文档(比如
index.html),替代原S3静态网站的索引页配置
方案二:保留S3网站终端节点,强制查看器端HTTPS
如果必须保留S3的静态网站托管功能(比如自定义重定向、错误页面规则),可以让CloudFront用HTTP访问S3源,但确保用户访问时只能用HTTPS:
- 保持CloudFront源为S3网站终端节点
- 在CloudFront的缓存行为中,确认已开启HTTP重定向至HTTPS,同时将查看器协议策略设置为
Redirect HTTP to HTTPS - 虽然CloudFront到S3是HTTP通信,但用户访问dev.abc.com时会被强制跳转到HTTPS,满足你“仅通过HTTPS访问”的核心需求
另外,检查以下配置是否正确,避免常见问题:
- 确认ACM证书是在us-east-1区域申请的(CloudFront要求证书必须在该区域)
- Route53的别名记录正确指向CloudFront分发的域名,且状态为
生效 - CloudFront分发的备用域名(CNAME)已正确设置为dev.abc.com
- 等待CloudFront分发部署完成(通常需要10-15分钟),新配置才会生效
内容的提问来源于stack exchange,提问作者Haleema Khan
相关产品推荐
相关产品推荐

