You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS S3+CloudFront+ACM+Route 53托管静态网站时www子域名异常

问题描述

我尝试使用AWS S3 Bucket、Route 53和CloudFront托管静态网站,同时通过ACM签发SSL证书。目前根域名https://example.com可正常访问,但https://www.example.com访问异常。

详细配置信息

S3 Bucket

  • 存储桶区域:美国西部(俄勒冈)us-west-2
  • 可公开访问,已关闭阻止所有公开访问
  • 已启用静态网站托管
  • 存储桶策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example.com/*"
        }
    ]
}
  • ACL设置:存储桶所有者(对象=列出、写入 | 存储桶ACL=读取、写入)
  • 所有对象已通过ACL设置为公开

ACM证书

  • 在美国东部(弗吉尼亚北部)us-east-1区域创建
  • 已包含根域名example.com和子域名www.example.com

CloudFront分发

  • 已创建分发并应用上述ACM证书
  • 支持HTTP版本:HTTP/2

Route 53 & 域名服务商(Google Domains)

  • 已在Route 53创建托管区域
  • 因证书位于us-east-1,手动为根域名和子域名添加CNAME记录后,将DNS信息复制到Google Domains

疑问

https://www.example.com访问报错,请问操作哪里有误?


可能的问题点及解决方案

1. CloudFront分发未添加www.example.com作为备用域名(CNAME)

CloudFront分发需要明确将所有要关联的域名添加到**备用域名(CNAMEs)**列表中,否则即使证书包含该域名,CloudFront也不会处理该域名的请求。

  • 操作步骤:
    1. 进入CloudFront控制台,找到对应的分发
    2. 切换到常规标签,点击编辑
    3. 在**备用域名(CNAMEs)**字段中添加www.example.com
    4. 保存更改,等待分发部署完成(通常需要15-20分钟)

2. www子域名的DNS记录配置错误

  • 根域名(example.com)不应使用CNAME记录:根据DNS规范,根域名( apex domain)不能设置CNAME记录,部分服务商(如Google Domains)支持用特殊的A记录(别名)指向CloudFront分发域名,这可能是你根域名能正常访问的原因,但www子域名的CNAME必须正确指向CloudFront分发的域名(如d123456abcdef.cloudfront.net)。
  • 检查步骤:
    1. 在Route 53或Google Domains中查看www.example.com的CNAME记录值,确认是否与CloudFront分发的域名完全一致
    2. 使用nslookup www.example.com或dig www.example.com命令验证DNS解析是否生效,若解析结果不对,等待缓存过期或重新配置记录

3. 缺少对应www子域名的S3存储桶配置(可选)

若你的CloudFront分发源直接指向example.com存储桶,通常不需要额外的www存储桶,但如果是通过S3静态网站托管的方式配置,部分场景下需要创建www.example.com存储桶并设置重定向到根域名:

  • 操作步骤:
    1. 创建名为www.example.com的S3存储桶,区域与主桶一致
    2. 启用静态网站托管,选择重定向到另一个主机名,目标地址填写example.com
    3. 确保该存储桶的权限配置正确(无需公开访问,因为CloudFront会作为访问入口)

4. ACM证书的www子域名未完成验证

虽然你提到证书包含www.example.com,但需确认该子域名的验证状态为已成功:

  • 操作步骤:
    1. 进入us-east-1区域的ACM控制台
    2. 找到对应的证书,查看www.example.com的验证状态
    3. 若未验证,重新完成DNS验证(添加对应的CNAME记录到域名服务商)或邮件验证

5. CloudFront缓存或浏览器缓存问题

  • 尝试使用无痕模式访问https://www.example.com,排除浏览器缓存影响
  • 进入CloudFront控制台,对分发执行创建无效操作,清除缓存内容(路径填写/*)

内容的提问来源于stack exchange,提问作者ssdesign

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:40:23