keepalive_timeout用于设置nginx中http长连接的最大空闲等待时间,单位秒,可配置在http/server/location块中,优先级location>server>http;常用写法为keepalive_timeout 65或keepalive_timeout 65 60,推荐生产环境设为15–30秒,并配合keepalive_requests使用。

在 Nginx 中,keepalive_timeout 用于控制客户端与服务器之间 HTTP 长连接(Keep-Alive)的最大空闲等待时间。超过该时间未收到新请求,Nginx 会主动关闭连接。合理设置它能平衡资源占用与响应速度。
基本语法和位置
该指令可出现在 http、server 或 location 块中,优先级由低到高(location > server > http)。常用写法:
-
keepalive_timeout 65;—— 只设超时时间(单位:秒) -
keepalive_timeout 65 60;—— 第一个值是服务端等待时间,第二个是发送给客户端的Keep-Alive: timeout=60响应头值(可选,通常保持一致即可)
典型配置示例
在 http 块中统一设置(推荐大多数场景):
http {
keepalive_timeout 30;
keepalive_requests 100; # 单个连接最多处理 100 个请求(可选,配合使用)
}若某 API 接口对延迟敏感、并发连接多,可在对应 location 中缩短:
location /api/ {
keepalive_timeout 15;
}注意事项和调优建议
- 默认值通常是 65 秒(不同版本略有差异),生产环境常调低至 15–30 秒,避免连接长时间空占 worker 进程
- 不能设为 0(禁用长连接),应改用
keepalive_disable或直接不启用 Keep-Alive - 需确保上游(如后端应用、负载均衡器)也支持并兼容该超时值,否则可能提前断连
- 搭配
keepalive_requests使用更稳妥,防止单连接请求过多导致内存累积
验证是否生效
用 curl 查看响应头:
curl -I http://your-domain.com
若返回包含 Connection: keep-alive 和 Keep-Alive: timeout=30,说明配置已生效。











