Nginx连接超时需分阶段配置:客户端侧(client_header_timeout、client_body_timeout、send_timeout、keepalive_timeout)、代理侧(proxy_connect_timeout、proxy_send_timeout、proxy_read_timeout)各司其职,按请求生命周期分层设值,错配易致408/504或资源堆积。

在 nginx.conf 中控制连接超时,核心是按请求生命周期分阶段设置对应参数,不是靠单一配置。关键要区分“客户端到 Nginx”和“Nginx 到后端”两个路径,各自有独立的超时控制逻辑。
客户端请求阶段的超时控制
这部分影响浏览器或 App 向 Nginx 发送请求的过程,设太长易被慢速攻击利用,设太短会误杀弱网用户。
- client_header_timeout:等待客户端发完请求行和所有请求头的最大时间。默认 60 秒,公网服务建议 10–20 秒;含 JWT 或多 Cookie 的复杂鉴权场景可设 15 秒以上。
-
client_body_timeout:请求头收完后,等待请求体(如 POST 数据、文件分片)到达的“两次数据包间隔”超时。注意:它不是总上传时长,而是静默容忍窗口。普通表单设 10–20 秒,大文件上传服务可设 60–120 秒,并确保
client_max_body_size和后端超时同步。
Nginx 响应返回阶段的超时控制
这个阶段决定 Nginx 把响应内容发给客户端时的耐心程度,尤其影响大响应体或高延迟网络下的体验。
- send_timeout:从发送第一个字节起,两次写操作之间的空闲等待上限。默认 60 秒,多数业务设 10–30 秒更稳妥;跨境回源或流式接口可放宽至 60 秒,但不宜超过 120 秒,否则连接长期挂起占用 worker。
-
keepalive_timeout:HTTP Keep-Alive 连接空闲保持时间。默认 75 秒,但主流浏览器实际只认 60 秒左右,设为 60 更兼容;高并发 API 服务建议 15–30 秒,静态资源站可压到 5–10 秒。该值通常需大于
client_body_timeout,避免连接在上传中途被回收。
反向代理通信阶段的超时控制
当 Nginx 充当代理转发请求到 Tomcat、PHP-FPM 或其他上游服务时,这三项必须显式配置,否则沿用默认 60 秒,极易触发 504 错误。
- proxy_connect_timeout:建立 TCP 连接到上游服务器的最长等待时间。跨机房或容器网络不稳定时,设 3–5 秒比 60 秒更合理,避免阻塞 worker。
- proxy_send_timeout:Nginx 向上游完整发出请求(含 header + body)的总时限。大文件上传或长耗时调用需调高,例如设为 3600 秒——前提是后端真能处理这么久。
- proxy_read_timeout:Nginx 等待上游返回响应的最长时间。这是解决 504 最常调整的参数,应与后端真实业务耗时匹配,比如报表导出设 600 秒,AI 推理设 1800 秒。
配置位置与继承关系
这些参数支持在 http、server、location 三个层级设置,低层级会覆盖高层级值。建议:
- 全局基础值写在
http块,如keepalive_timeout 60;、send_timeout 30s; - 特殊业务(如上传接口、后台管理)在
location块单独覆盖,例如client_body_timeout 120s;、proxy_read_timeout 600; - 避免在
http块盲目调大所有超时,容易引发连接堆积和资源耗尽。











