通过代理访问网站出现 502 Bad Gateway 或 504 Gateway Timeout 时,先不要连续刷新,也不要立即把所有出口 IP 都换一遍。502 表示网关从上游收到无效响应,504 表示网关等待上游响应超时;但返回错误的网关可能是代理节点、目标站反向代理、内容分发节点或企业网络出口。
排查目标不是“让页面偶尔打开”,而是定位错误由哪一段路径产生。先记录目标域名、完整状态码、响应头、发生时间、代理协议、出口 IP、首字节时间和总耗时,再用同一设备、同一请求做直连与代理对照。只有错误层明确后,才决定修配置、降低并发、等待上游恢复或隔离线路。
先用对照表区分 502、504 和连接超时
| 现象 | 重点证据 | 优先判断 | 不要先做 |
|---|---|---|---|
| 立即返回 502 | 响应头、网关标识、响应体 | 网关收到无效上游响应 | 无限重试同一请求 |
| 等待较久后返回 504 | 首字节时间、总耗时、超时阈值 | 网关等待上游超时 | 同时提高并发和超时 |
| 没有 HTTP 状态码 | 连接错误、握手阶段、客户端日志 | 连接或协议层失败 | 把它直接记成 504 |
| 直连正常、代理失败 | 代理出口、协议、节点时间 | 代理路径或节点问题 | 修改目标站账号设置 |
| 直连和代理都失败 | 目标站状态、不同网络对照 | 目标站或共同上游异常 | 批量更换代理 IP |
1. 保存原始响应,确认错误由谁返回
不要只截取浏览器错误页。保存状态码、响应头、响应体前几行、请求时间和最终域名。响应头中的服务器或网关字段、追踪标识和缓存状态可以帮助判断错误来自代理节点还是目标站边缘网关。若客户端只报告“连接失败”而没有 HTTP 状态码,应先按代理连接超时与配置检查顺序排除地址、端口、认证和基础握手问题。
通过条件是能够稳定复现同一个状态码,并确认返回错误的网络层。若每次错误代码、耗时和出口 IP 都不同,先缩小变量:固定目标、固定节点、固定协议和单个请求,不要带着混杂样本继续判断。
2. 用同一请求做直连与代理对照
在同一时间窗口内执行三组测试:直连一次、代理单次请求一次、代理间隔后再请求一次。三组都记录域名、解析地址、出口 IP、状态码、首字节时间和总耗时。直连与代理都返回 502/504,优先查看目标站或共同上游;只有代理失败,才继续检查代理节点、协议与出口路径。
如果同一代理访问部分网站正常、部分网站持续失败,可结合不同网站访问路径排查表比较目标域名、跳转链和最终节点。不要用“另一个网站能打开”直接证明当前目标的上游链路正常。
3. 根据响应时间区分即时网关错误和等待超时
502 往往在网关连接上游失败、收到无效响应或连接被提前关闭后较快返回;504 通常接近网关的等待阈值。记录首字节时间和总耗时,再与正常请求基线比较。若每次都在近似时长返回 504,说明存在稳定的超时边界;若 502 几乎立即出现,应优先查看上游连接、协议协商或节点健康状态。
若故障同时伴随延迟突增,可沿代理延迟波动的分层检查路径核对线路跳数、目标响应和重试间隔。延迟异常尚未解释前,不要单纯拉长客户端等待时间。
4. 核对代理协议、目标端口和请求方法
客户端选择的代理协议、代理端口和目标端口必须匹配。错误地把 HTTP 代理当作 SOCKS5 使用,或在不支持的链路上转发特定方法,可能让中间网关返回无效上游响应。按HTTP、HTTPS 与 SOCKS5 协议选择表重新确认客户端写法、认证格式、域名解析位置和目标端口。
测试时先使用一个低风险、可重复的读取请求。不要一开始就带大请求体、文件上传或长连接。基础读取通过后,再逐步恢复真实方法、请求头和负载,才能知道是哪一个变量触发网关错误。
5. 检查上游容量、并发和连接复用
单次请求正常而并发后出现 502/504,通常需要检查连接池、任务队列、上游容量和连接复用。先把并发降到 1,关闭自动重试,测量一组基线;随后小幅增加并发并记录成功率、状态码分布和响应时间。不要在故障期同时扩大连接池和重试次数。
如果只有长请求或大响应失败,应核对客户端、代理和目标站各自的读取超时、上传限制与连接保持时间。任何一层的阈值都可能先结束请求。没有服务端或网关配置权限时,只记录可观察证据,不要声称已经确定目标站内部原因。
6. 给重试设置次数、间隔和停止条件
502/504 可能是短暂波动,但重试必须有边界。建议先进行不超过两次的低频复测,每次保留同样的目标、方法和代理节点,并逐步延长间隔。若错误持续、响应时间越来越长,或目标站明确要求稍后再试,应停止请求并等待恢复窗口。
不要对登录、支付、提交表单等可能产生副作用的请求自动重试。无法确认上一次是否已经被上游处理时,先检查业务结果或请求标识,避免重复提交。重试策略只用于验证链路,不应用来绕过目标站限制。
7. 修复后按通过、失败和停止条件复测
| 复测结果 | 判断 | 下一步 |
|---|---|---|
| 直连和代理均稳定返回预期状态 | 链路恢复 | 用小流量恢复真实任务 |
| 直连正常,固定代理持续 502 | 代理节点或上游连接异常 | 隔离节点并保存响应证据 |
| 直连正常,固定时长后持续 504 | 代理路径等待上游超时 | 核对阈值、负载与线路延迟 |
| 降低并发后恢复 | 容量或连接池相关 | 保持低并发并逐级验证 |
| 所有路径持续失败 | 目标站或共同上游异常 | 停止重试并等待官方恢复 |
把每轮结果写入代理测试记录模板,至少保留测试时间、目标域名、请求方法、代理协议、出口 IP、状态码、首字节时间、总耗时、重试次数和最终判断。只有两轮低流量复测结果一致,才认为修复可重复。
8. 什么时候应该隔离代理线路
若同一节点对多个无关目标持续返回 502/504、响应头显示同一异常网关、错误率在低并发下仍不下降,或节点在恢复后很快再次失败,应暂停该节点并保留时间窗口与证据。不要把异常节点继续放在自动轮换池里稀释错误。
确认故障仅来自代理路径后,可从住宅代理线路选择一个低流量测试入口,使用相同请求重新对照。更换线路只用于隔离验证,不代表旧线路的根因已经查明。
结论:先定位返回错误的网关,再决定是否重试
代理访问返回 502 或 504 时,正确顺序是保存原始响应、做直连与代理对照、比较响应时间、核对协议与目标端口,再检查并发、连接复用和超时阈值。每一步都要有稳定样本和明确的通过条件。
重试次数应有限,可能产生副作用的请求不自动重试。只要错误来源仍不明确、低并发仍持续失败或所有路径都指向共同上游异常,就应暂停任务并保留证据,而不是用更多请求掩盖故障。