599 是什么
599 不在 IANA 的 HTTP 状态码注册表里,是部分代理与 CDN 自行约定的状态码,常见含义是「与上游建立连接超时」。因为不在标准内,各产品对 5xx 非标区间的定义各不相同——Cloudflare 就在 520 到 527 等编号上定义了自己的语义——对接时必须看对方文档。
基本信息
| 名称 | 599(非标准) |
|---|---|
| 类别 | 非标 5xx |
| 规范依据 | 无 RFC,由具体实现自定义 |
| 常见含义 | 代理或网关连接上游超时 |
| 风险 | 客户端可能识别为未知码 |
| 归类原则 | 仍属 5xx,表示服务器侧问题 |
典型使用场景
- 排查上游超时:网关日志里的 599 通常指向连接后端超时
- 与第三方对接:先确认对方对非标 5xx 的具体定义
- 监控口径:把非标 5xx 单独归类,避免与标准 5xx 混算
- 客户端健壮性:未知 5xx 一律按服务器错误处理并退避重试
- 网关调优:检查连接与读取超时参数是否过短
- 故障演练:验证后端完全不可达时网关的返回行为是否可预期
以行为为准而非编号
以行为为准而非编号
# 以超时或连接失败的行为为准,而不是状态码本身
curl -sv --max-time 10 https://api.example.com/slow 2>&1 | tail -5
# 网关侧常见成因:连接后端超时,检查相关超时参数
grep -E 'proxy_(connect|read)_timeout' /etc/nginx/nginx.conf常见的厂商自定义 5xx
| 编号 | 常见含义 | 备注 |
|---|---|---|
| 520 | 未知错误 | Cloudflare 定义 |
| 521 | 源站不可达 | Cloudflare 定义 |
| 522 | 连接源站超时 | Cloudflare 定义 |
| 524 | 源站响应超时 | Cloudflare 定义 |
| 599 | 连接上游超时 | 部分代理网关自行约定 |
不要把 599 写进客户端的固定分支逻辑:同一编号在别的厂商那里含义可能完全不同,换网关后会直接失效。
规范对非标状态码的处理思路是按类别归因:5xx 一律表示服务器侧问题,客户端对幂等请求可以安全重试。
网关连接上游超时通常涉及连接超时、读取超时与重试次数三类参数,调整前先确认后端的真实耗时分布。
把非标 5xx 与业务错误一起统计,会掩盖真实的上游可用性问题。
对接双方应约定「未知状态码」的兜底策略,而不是依赖某个具体编号的含义。