自定义域名无法解析AWS CloudFront分发问题求助
CloudFront自定义域名访问故障排查步骤
1. 先确认DNS记录是否生效且正确
- 直接用
nslookup或者dig命令查自定义域名的解析结果,比如执行dig your-custom-domain.com,看返回的记录是不是指向d1srvdzuzxvion.cloudfront.net。 - 新创建的DNS记录可能需要等10分钟到24小时的全球同步时间,别着急,多等会儿或者换个网络环境测试。
- 如果用的是Route 53托管区域,优先用**A记录(别名)**指向CloudFront分发,别用CNAME,这样根域名和子域名都能正常解析。
2. 检查CloudFront的自定义域名配置
- 登录CloudFront控制台,找到你的分发,看“备用域名(CNAME)”里有没有加你的自定义域名,拼写必须完全一致,别打错字。
- 确认SSL证书没问题:CloudFront要求证书必须部署在**us-east-1(弗吉尼亚北部)**区域,不管你的其他资源在哪个区。而且证书得是ACM颁发的,状态显示“已颁发”,还要确保证书覆盖了你的自定义域名(包括子域名的话要加通配符)。
- 看一下Viewer协议策略:如果自定义域名用HTTPS,要么设成“将HTTP重定向到HTTPS”,要么直接“仅HTTPS”,不然HTTP访问可能出问题。
3. 核对S3和CloudFront的关联配置
- 要是CloudFront指向的是S3静态网站端点,得确保存储桶的访问权限是给CloudFront的OAI(Origin Access Identity)开的,别直接设成公开读,容易出权限问题。
- 检查CloudFront的源地址:得是S3静态网站的域名(比如
your-bucket.s3-website-us-east-1.amazonaws.com),别用S3的REST API地址(your-bucket.s3.amazonaws.com),后者会导致路由异常,React的单页应用加载不出来。 - 看缓存行为设置:尤其是React的
index.html,别设置过长的缓存时间,或者直接把它排除在缓存规则外,不然更新内容后用户看不到新页面,甚至可能出现404。
4. 排除本地浏览器和环境的问题
- 开隐私模式访问试试,或者直接清空浏览器缓存,有时候旧缓存会导致解析异常。
- 检查本地hosts文件,别被自己或者其他程序改了,把自定义域名指向了错误的IP。
- 关掉VPN、代理或者本地防火墙,这些工具可能会拦截请求,导致访问失败。
5. 其他可能的排查点
- 确认CloudFront分发状态是“已部署”,刚改完配置得等15-20分钟才能生效,别刚改完就急着测试。
- 开CloudFront的访问日志,看看请求有没有到CloudFront,返回的状态码是什么(比如403是权限问题,404是资源找不到,502是源站出问题),根据状态码针对性排查。
- 查一下自定义域名的WHOIS信息,确保域名没过期,而且DNS服务器已经改成Route 53托管区域的服务器。
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

