Nginx超时需分阶段配置:客户端到Nginx(client_header_timeout、client_body_timeout、keepalive_timeout)、Nginx到客户端(send_timeout)、Nginx到后端(proxy_connect_timeout、proxy_send_timeout、proxy_read_timeout),各参数须按业务真实耗时和网络环境合理设置,并遵循http/server/location层级优先级。

Nginx 的超时时间不是“调一个数就能搞定”,而是按请求生命周期分阶段控制的。配错位置或数值,轻则返回 408、504,重则连接堆积、worker 被占满。关键要分清:谁对谁超时、在哪个环节超时、业务真实耗时是多少。
客户端到 Nginx 的超时(防慢速攻击 + 兼容弱网)
这部分管浏览器或 App 怎么把请求发给 Nginx,设太短会误杀移动端用户,设太长易被利用。
- client_header_timeout:等待客户端发完请求行和所有请求头的最大时间。默认 60 秒,公网服务建议 10–20 秒;含 JWT 或多 Cookie 的鉴权接口可设 15 秒以上。
-
client_body_timeout:请求头收完后,两次上传数据包之间的静默容忍时间(不是总上传时长)。普通表单设 10–20 秒;大文件上传服务可设 60–120 秒,同时确保
client_max_body_size和后端接收能力匹配。 -
keepalive_timeout:HTTP Keep-Alive 空闲连接保持时间。默认 75 秒,但主流浏览器实际只认 60 秒左右,设为 60 更兼容;高并发 API 建议 15–30 秒,静态资源站可压到 5–10 秒。该值通常需大于
client_body_timeout,避免上传中途断连。
Nginx 向客户端发响应的超时(影响流式接口与跨境链路)
这个阶段决定 Nginx 把响应内容推给用户时能等多久。
- send_timeout:从发送第一个字节起,两次写操作之间的空闲等待上限。默认 60 秒,多数业务设 10–30 秒更稳妥;AI 推理流式返回或 CDN 回源延迟高时可放宽至 60 秒,但不宜超过 120 秒,否则连接长期挂起占用 worker。
Nginx 到后端服务的代理超时(解决 504 的核心)
当 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块 - 某个域名特殊策略写在
server块 - 某个接口(如 /upload、/report)需要单独调参,就写在对应
location块里
例如:
location /api/report {
proxy_read_timeout 600;
proxy_send_timeout 600;
}不复杂但容易忽略。


















