Nginx控制客户端连接超时的核心参数是keepalive_timeout、client_header_timeout、client_body_timeout和send_timeout;前者管理长连接空闲超时,后三者分别限制请求头/体接收及响应发送的停顿超时,均建议在http块中配置并reload生效。
Nginx 主配置文件(通常为 /etc/nginx/nginx.conf)中,控制客户端连接超时自动断开的核心全局参数是 keepalive_timeout 和 client_header_timeout、client_body_timeout。它们作用不同,需配合设置才能有效管理空闲连接和请求阶段的超时行为。
该指令定义客户端与 Nginx 建立的 keep-alive 连接在无活动时的最大等待时间。超过此时间,Nginx 会主动关闭 TCP 连接。
keepalive_timeout timeout [header_timeout];
keepalive_timeout 75s;
keepalive_timeout 30s;
0,则禁用 keep-alive,每次请求后立即断开这两个参数不控制“连接空闲”,而是限制客户端发送请求头或请求体的耗时。若客户端迟迟不发完,Nginx 将直接关闭连接,防止资源被长期占用。
client_header_timeout 10s;:等待完整 HTTP 请求头的最长时间client_body_timeout 10s;:接收请求体(如上传内容)的单次读取超时(非总时长),连续超时多次即断开当 Nginx 向客户端发送响应时,若两次写操作间隔超过 send_timeout,连接会被关闭。适用于大文件传输或网络不稳定场景。
send_timeout 25s;
60s,可适当调低至 25s 或 30s
上述指令应放在 http{...} 块内(全局生效),也可在 server{...} 或 location{...} 中覆盖。例如:
http {keepalive_timeout 30s;client_header_timeout 10s;client_body_timeout 10s;send_timeout 25s;server {listen 80;server_name example.com;# 此处可单独覆盖:keepalive_timeout 15s;}}
修改后需执行 nginx -t 检查语法,再 systemctl reload nginx 生效。