AWS Route53转CloudFront问题:自定义域名cdn.mydomain.com无法访问
我来帮你梳理下问题根源,以及一步步的解决办法——你现在的核心问题是混淆了CloudFront作为统一流量入口的作用,完全不需要为cdn.mydomain.com单独创建S3存储桶,咱们一步步调整配置:
问题根源分析
你不需要给cdn.mydomain.com建S3桶,因为所有CDN子域名的请求都应该通过CloudFront统一转发到你的主S3桶(mydomain.com)。之前创建cdn的S3桶属于多余操作,反而引发了Route53的记录冲突,再加上CloudFront/Route53的配置疏漏,才出现了IP地址未找到的错误。
分步解决方案
1. 先清理错误配置
- 删掉你创建的
cdn.mydomain.comS3存储桶,这个桶完全没必要,只会增加配置复杂度。 - 登录Route53控制台,检查
cdn.mydomain.com的所有记录:确保只保留指向CloudFront分发的A/AAAA别名记录,删除任何旧的CNAME记录或指向S3的A记录,避免冲突。
2. 验证CloudFront核心配置
2.1 确认备用域名(CNAME)设置
进入CloudFront控制台找到你的分发:
- 在「备用域名(CNAMEs)」里,确认已经添加了
mydomain.com、www.mydomain.com、cdn.mydomain.com三个域名。 - 确认关联的ACM证书是正确的:证书必须包含这三个域名,且证书是在us-east-1(弗吉尼亚北部)区域申请的(CloudFront仅支持该区域的ACM证书,这是AWS硬性要求)。
2.2 检查源配置
确保CloudFront的源指向你的主S3静态网站:
- 源类型选「自定义源」,源域名填写你的S3静态网站端点(比如
mydomain.com.s3-website-<你的区域>.amazonaws.com,不是S3桶的默认域名mydomain.com.s3.amazonaws.com)。 - 源协议策略根据你的S3配置选「HTTP和HTTPS」或「仅HTTPS」。
2.3 验证行为设置
检查CloudFront的行为规则:
- 确保默认行为(或针对
/asset/*的特定行为)的源是你配置的主S3源,缓存策略符合静态资源需求(比如图片类可以设置较长TTL)。 - 确认「查看器协议策略」设为「重定向HTTP到HTTPS」,确保用户访问http时自动跳转至https。
3. 确认Route53的正确配置
在Route53托管区中,为cdn.mydomain.com配置(或确认已存在)正确的别名记录:
- 记录类型选A - IPv4地址,勾选「别名」选项,别名目标选择你的CloudFront分发域名(比如
d1234567890abc.cloudfront.net)。 - 同样创建AAAA - IPv6地址的别名记录,指向同一个CloudFront分发,确保IPv6用户也能正常访问。
4. 等待DNS生效并测试
- DNS记录的TTL(生存时间)决定生效速度,默认一般是300秒(5分钟),最多可能需要1-2小时完全生效。
- 用
nslookup cdn.mydomain.com或dig cdn.mydomain.com命令测试解析,看是否返回CloudFront的IP地址。 - 解析正常后,访问
https://cdn.mydomain.com/asset/some-image.png,确认资源能正常加载。
关键注意事项
- CloudFront的ACM证书必须在us-east-1区域,别选错区域导致证书无法关联。
- 不要用S3桶的默认域名作为CloudFront源,一定要用静态网站托管的端点,否则会出现访问权限或内容不匹配的问题。
- 所有子域名(www、cdn)的流量都应该通过CloudFront,不需要直接指向S3,这样才能充分利用CDN的缓存、HTTPS、全球加速等功能。
内容的提问来源于stack exchange,提问作者somnathbm
相关产品推荐
相关产品推荐

