rmdir.cn
← 排障手册

网站重定向循环排障

逐跳核对状态与 Location,区分协议、主机名、路径和代理协议感知问题。

适用范围与前提

HTTP/HTTPS 网站及反向代理;响应头文本本身不能证明完整跳转链。

  • 仅请求获授权的目标和已确认无业务写入的路径;HEAD/GET 都会产生网络访问、日志和可能的应用副作用。
  • 先记录浏览器 Network 的状态、Location、时间和实际入口;不要分享 Cookie、Authorization 或带令牌的跳转地址。
  • 下面命令不自动跟随重定向;只有人工确认下一跳仍在授权范围内后才继续。

命令仅供手动复制到获授权的环境执行。站点不会连接服务器;涉及网络的诊断可能产生请求或登录审计记录。

1. 查看首跳,不自动携带凭据跟随

curl --head --max-time 5 https://example.com/

预期现象:记录状态与 Location。3xx 不全是跳转,304 是协商缓存;HEAD 返回 405 不证明服务故障,可由负责人批准改用安全 GET 路径。

2. 对照 HTTP 与 HTTPS 入口

curl --head --max-time 5 http://example.com/
curl --head --max-time 5 https://example.com/

预期现象:逐跳人工记录原 URL、状态和解析后的 Location,确认重复 URL。特别检查 http/https 往返、www/裸域互跳、路径尾斜杠;不要将代理 CONNECT 或 1xx 临时块当作重定向。

3. 只读核对 TLS 终止和代理协议头

sudo nginx -t
sudo nginx -T

预期现象:在获授权的 Nginx 主机查看命中配置,确认 TLS 在哪一层终止,以及可信代理如何设置/覆盖 Forwarded 或 X-Forwarded-Proto。完整配置可能含敏感信息;不能无条件信任客户端提供的协议头。

4. 对照浏览器独有状态

# 在浏览器开发者工具 Network 中保留日志,人工核对实际跳转、Initiator、缓存和 Cookie;不要导出含凭据的 HAR。

预期现象:区分服务端 3xx、HSTS 内部升级、JavaScript 跳转、旧 301 缓存和登录 Cookie。curl 不执行 JavaScript,也不自动复用浏览器 Cookie。

修复建议(需人工确认)

  • 经负责人确认后统一协议/域名/路径规范化规则,保留一个明确的跳转责任层和回退配置。
  • 修正可信代理范围与协议传递,在 nginx -t 通过后按维护流程加载;不通过放宽所有代理信任来修复。
  • 登录回调或 Cookie 策略由应用负责人检查;旧缓存仅在留存证据、确认影响后定向清除,不移除 HTTPS 或关闭证书验证。
完成经确认的修复后,验证恢复

验证恢复

  • 从原浏览器和各授权入口验证有限跳转后到达预期页面,记录最终 URL 和状态。
  • 确认登录/退出及正常凭据校验仍有效;检查各代理节点日志,不能只以 curl 首跳成功作为恢复标准。

升级求助前收集

  • 脱敏逐跳表、时间、TLS 终止位置、可信代理拓扑、近期变更及浏览器/命令差异;不包含原 Cookie 或完整敏感 URL。