S3+CloudFront+Route53缓存异常排查求助
问题背景
使用S3、CloudFront和Route53搭建的静态网站,从版本1更新至版本2后出现异常:
- 直接访问S3端点(
http://abc.s3-website-eu-west-1.amazonaws.com/)可看到版本2 - 直接访问CloudFront端点(
https://xyz.cloudfront.net/)可看到版本2 - 通过Route53配置的域名(A记录指向CloudFront分发)仍显示版本1,已持续约1周(DNS记录使用默认TTL)
额外检测信息:
dig A xyz.cloudfront.net与dig A mydomain.com返回相同IP- curl结果显示域名存在旧配置的302跳转(原指向
www.example.com,现已改为直接指向CloudFront):
curl -sD - https://example.com -o /dev/null HTTP/1.1 302 Moved Temporarily Content-Length: 0 Connection: keep-alive Server: CloudFront Location: https://www.example.com/ X-Cache: Miss from cloudfront Via: 1.1 qwe.cloudfront.net (CloudFront) ...curl -sD - https://xyz.cloudfront.net -o /dev/null HTTP/2 200 content-type: text/html content-length: 537 date: Fri, 18 Nov 2022 20:35:41 GMT last-modified: Tue, 15 Nov 2022 10:09:03 GMT etag: "..." server: AmazonS3 x-cache: Miss from cloudfront via: 1.1 bla.cloudfront.net (CloudFront) ...
可排查的配置问题
检查CloudFront分发的自定义域名与行为配置
- 确认该分发是否正确绑定了
example.com自定义域名,而非仅绑定www.example.com - 查看分发的行为规则,是否针对
example.com的请求路径遗留了旧的302跳转策略 - 检查自定义错误响应设置,是否存在意外触发的跳转规则
- 确认该分发是否正确绑定了
验证CloudFront缓存无效化与缓存策略
- 确认是否针对
example.com/*路径执行了缓存无效化操作,可能之前仅对CloudFront默认域名做了无效化,未覆盖自定义域名路径 - 检查缓存键配置,若Host头部是缓存键的一部分,默认域名的无效化不会影响自定义域名的缓存
- 确认是否针对
检查Route53记录的细节配置
- 确认A记录是别名记录指向CloudFront分发,而非手动设置的普通A记录(别名记录才会自动同步CloudFront的IP变化)
- 排查托管区内是否存在其他冲突记录:比如
example.com的CNAME记录、Route53重定向记录,或关联了异常的健康检查路由 - 确认托管区的域名服务器已正确生效,用户访问时使用的是你的Route53 DNS,而非旧服务商的缓存
检查SSL证书与Viewer协议策略
- 确认CloudFront绑定的ACM证书覆盖了
example.com域名,且证书状态有效 - 查看Viewer Protocol Policy设置,是否在强制HTTPS跳转时遗留了旧的302规则
- 确认CloudFront绑定的ACM证书覆盖了
检查S3桶的附加配置
- 确认S3桶的静态网站托管设置中,没有遗留桶级别的302跳转至
www.example.com的规则 - 检查CloudFront分发的源配置:若使用的是S3 REST API端点而非静态网站端点,需确认OAI权限是否正常,是否因权限问题导致读取旧内容
- 确认S3桶的静态网站托管设置中,没有遗留桶级别的302跳转至
内容的提问来源于stack exchange,提问作者kopelitsa
相关产品推荐
相关产品推荐

