Nginx超时配置需精准匹配业务场景与网络实际,而非一味设长:client_header_timeout和client_body_timeout防慢速攻击并保障上传;proxy_connect_timeout快速识别连接失败;proxy_read_timeout须基于P95响应加余量;keepalive_timeout与keepalive_requests协同控制长连接复用与资源回收。

连接超时配置不是“设得越长越稳”,而是让 Nginx 在用户可感知的等待边界内,快速识别失败、及时释放资源、并给出明确反馈。合理设置能减少假死、降低 5xx 错误率、提升首字节响应速度(TTFB),尤其对移动端和弱网用户效果明显。
client_header_timeout 和 client_body_timeout:防慢速攻击,保正常上传
这两个参数决定 Nginx 等待客户端发完请求头和请求体的时间。设太短会误杀弱网用户;设太长则易被 Slowloris 类攻击拖垮 worker 进程。
- 普通网页(HTML/JS/CSS):建议 client_header_timeout 10s、client_body_timeout 10s
- 含文件上传的后台系统(如 CMS、表单):client_header_timeout 30s、client_body_timeout 300s(支持百 MB 级断点续传)
- 移动端 API(TLS 握手+代理重传常见):统一设为 60s,避免因中间链路抖动触发 408
注意:client_body_timeout 不限制总上传时长,只管两次 TCP 数据包之间的空闲间隔——只要客户端持续发送数据,就不会超时。
proxy_connect_timeout:快判“连不上”,别让用户干等
它只管三次握手阶段:Nginx 发 SYN 后,等后端回 SYN-ACK 的时间。一旦连上,它的任务就结束。这不是后端处理慢的锅,而是网络或服务可用性问题的“第一道哨兵”。
- 同机房或同 VPC 内:RTT 极低,设 3–5 秒 即可覆盖抖动
- 跨可用区(如华东1-B 到华东1-C):设 5–8 秒
- 混合云或公网后端:放宽至 10–15 秒;超过 20 秒应排查网络质量或后端部署
- 绝对避免默认 60 秒——用户卡 60 秒才看到 502,体验极差
proxy_read_timeout 和 send_timeout:匹配后端节奏,不打断流式响应
proxy_read_timeout 控制 Nginx 等后端返回完整响应的最大时间,直接影响是否返回 504。它必须基于真实 P95 响应时间加 20% 余量设定。
- 常规接口(P95 ≤ 1s):设 15–30 秒
- 报表导出类(P95 ≈ 90s):设 120 秒,而非盲目照搬 60 秒
- 流式响应(SSE、长轮询):需设大值(如 3600),并配 proxy_buffering off
- send_timeout(向客户端发响应)建议设 10–30 秒,防弱网下 ACK 滞后导致连接僵死
keepalive_timeout 与 keepalive_requests:平衡复用与资源回收
这对参数管理 HTTP/1.1 长连接生命周期,影响 TCP 建连开销和 worker 连接数占用。
- 静态资源/CDN:设 keepalive_timeout 10–30s,快速释放空闲连接
- 移动端 API:建议 5–15s,适配 App 休眠行为
- 内网服务/SSE:可延长至 60–300s,减少建连压力
- keepalive_requests 100 是安全值,防单连接无限复用耗尽缓冲区
高并发网关场景下,keepalive_timeout ≤ 5 秒 可显著降低文件描述符压力,但需配合客户端 Keep-Alive 支持。


















