Nginx 主配置文件中如何配置连接超时自动断开的全局参数

作者:袖梨 2026-09-01

Nginx控制客户端连接超时的核心参数是keepalive_timeout、client_header_timeout、client_body_timeout和send_timeout;前者管理长连接空闲超时,后三者分别限制请求头/体接收及响应发送的停顿超时,均建议在http块中配置并reload生效。

Nginx 主配置文件(通常为 /etc/nginx/nginx.conf)中,控制客户端连接超时自动断开的核心全局参数是 keepalive_timeoutclient_header_timeoutclient_body_timeout。它们作用不同,需配合设置才能有效管理空闲连接和请求阶段的超时行为。

keepalive_timeout:控制长连接空闲超时

该指令定义客户端与 Nginx 建立的 keep-alive 连接在无活动时的最大等待时间。超过此时间,Nginx 会主动关闭 TCP 连接。

  1. 语法:keepalive_timeout timeout [header_timeout];
  2. 默认值:keepalive_timeout 75s;
  3. 推荐设置(平衡性能与资源):keepalive_timeout 30s;
  4. 若设为 0,则禁用 keep-alive,每次请求后立即断开

client_header_timeout 和 client_body_timeout:应对慢请求攻击

这两个参数不控制“连接空闲”,而是限制客户端发送请求头或请求体的耗时。若客户端迟迟不发完,Nginx 将直接关闭连接,防止资源被长期占用。

  1. client_header_timeout 10s;:等待完整 HTTP 请求头的最长时间
  2. client_body_timeout 10s;:接收请求体(如上传内容)的单次读取超时(非总时长),连续超时多次即断开
  3. 建议值一般为 5–15 秒;生产环境不建议设过高,尤其面对公网时

补充:send_timeout 控制响应下发超时

当 Nginx 向客户端发送响应时,若两次写操作间隔超过 send_timeout,连接会被关闭。适用于大文件传输或网络不稳定场景。

  1. 语法:send_timeout 25s;
  2. 默认值:60s,可适当调低至 25s30s
  3. 注意:它只影响已开始发送后的“停顿”,不控制整个响应耗时

配置位置与生效范围

上述指令应放在 http{...} 块内(全局生效),也可在 server{...}location{...} 中覆盖。例如:

/etc/nginx/nginx.conf 示例片段:
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 生效。

相关文章

精彩推荐