直接配置 keepalive_timeout 即可启用客户端与 Nginx 间的 HTTP 长连接;第一个值设服务端空闲超时(秒),第二个值设响应头 Keep-Alive timeout(如 30 25),可置于 http/server/location 块且优先级递减,典型值依场景而定:高并发站点 15–30 秒、移动端 API 15–30 秒、静态资源 60–120 秒。

直接在 Nginx 配置中写 keepalive_timeout 指令就能启用客户端长连接,关键不是“能不能配”,而是两个数值怎么设才合理、在哪一级生效、以及如何避免踩坑。
两个参数的实际含义必须分清
该指令接受一个或两个秒级数值:
- 第一个值(必需):Nginx 在响应发完后,等待下一个请求的最长空闲时间。超时即主动关闭 TCP 连接
-
第二个值(可选):写入响应头
Keep-Alive: timeout=N的提示值,仅作客户端参考,不影响 Nginx 自身行为
例如 keepalive_timeout 30 25; 表示:服务端最多等 30 秒新请求,同时告诉浏览器“建议你在 25 秒内复用这个连接”。注意第二个值应 ≤ 第一个值,否则无效。
配置位置决定作用范围
它可放在 http、server 或 location 块中,优先级从高到低:
- 放在
http块:全局默认,所有虚拟主机继承 - 放在
server块:只对该域名或 IP 的服务生效 - 放在
location块:仅对匹配路径生效(如静态资源可设更短,API 接口可稍长)
推荐先在 http 块设统一基础值,再按需在 server 或 location 中覆盖。
不同业务场景的典型取值
没有通用最优值,需结合流量特征调整:
- 高并发 Web 站点(含大量小资源):15–30 秒——兼顾复用收益与连接堆积风险
- 移动端 API 或弱网环境:15–30 秒——建连成本高,延长复用更划算
- 静态资源服务(CDN / 图片/JS/CSS):60–120 秒——用户常批量请求,复用价值高
-
微服务间高频调用或健康检查混合场景:5–15 秒,并配合
keepalive_requests 50–100 -
调试或压测阶段:设为
0可彻底禁用 keepalive,方便观察单请求行为
验证是否真正生效
改完配置别急着上线,务必验证:
- 重载配置:
nginx -t && nginx -s reload - 检查响应头:
curl -I https://your-domain.com/,确认返回中含Connection: keep-alive和Keep-Alive: timeout=XX - 观察连接状态:
netstat -an | grep :80 | grep ESTABLISHED,对比有无长连接复用迹象
注意浏览器兼容性:Chrome/Firefox 通常尊重服务端 header,但 IE/旧版 Edge 实际上限常被限制在 60 秒左右。



















