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

如何排查CloudFront返回301状态码的原因?

CloudFront分发突然全量返回301状态码的排查方案

已知条件:

  • CloudFront分发正常运行5年,近几周所有请求返回301
  • 源站relay.jare.io直接访问https://relay.jare.io/?u=https://www.yegor256.com/index.html正常
  • CloudFront端点和源站SSL证书均有效,行为配置未修改

可能的问题及排查步骤

1. 源站针对CloudFront请求的特殊重定向规则

源站直接访问正常,但CloudFront的请求带有特殊标识(如User-Agent为Amazon CloudFront),可能触发源站的专属重定向规则:

  • 模拟CloudFront的请求头访问源站,检查响应状态:
    curl -I -A "Amazon CloudFront" "https://relay.jare.io/?u=https://www.yegor256.com/index.html"
    
  • 对比源站访问日志中,CloudFront发起的请求与你本地请求的响应差异。

2. CloudFront源站协议/端口配置隐性变更

虽然行为配置未修改,但源站基础设置可能被误操作:

  • 进入CloudFront控制台,检查分发的源设置:确认源站的协议策略(是否强制HTTPS)、端口是否正确。
  • 查看CloudFront访问日志,确认请求源站时使用的协议(HTTP/HTTPS),若使用HTTP而源站强制HTTPS,会触发301重定向。

3. CloudFront缓存的旧301响应

若之前某请求意外触发301,且缓存TTL过长,会导致后续请求命中缓存的301:

  • 手动清除对应路径的缓存:在CloudFront控制台的“缓存”选项卡,创建无效ation,路径填/*或具体路径/?u=https://www.yegor256.com/index.html。
  • 检查缓存策略配置,确认是否允许源站的Cache-Control/Expires头覆盖默认TTL,若源站近期修改了这些头,可能引发缓存异常。

4. CloudFront对源站的DNS解析异常

本地解析正常不代表CloudFront边缘节点解析正常:

  • 使用AWS CLI测试源站解析:
    aws cloudfront test-distribution --id <你的分发ID> --origin-domain-name relay.jare.io
    
  • 检查源站DNS记录是否近期变更(如切换DNS服务商、修改A/CNAME记录),导致CloudFront解析到错误IP。

5. CloudFront边缘节点或AWS区域故障

  • 查看AWS官方状态页面,确认CloudFront服务是否存在区域性故障。
  • 修改本地hosts文件,将CloudFront域名djk1be5eatcae.cloudfront.net指向其他区域的边缘节点IP,测试是否仍返回301。

6. 源站防火墙/WAF拦截CloudFront请求

源站防火墙可能对CloudFront IP段设置了重定向规则:

  • 将CloudFront的IP段临时加入源站白名单,测试请求是否恢复正常。
  • 查看源站防火墙/WAF日志,确认是否有来自CloudFront IP的请求被触发重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:44