直接配置 keepalive_timeout 即可启用 http 长连接;第一个值设服务端空闲超时(秒),第二个值设响应头 keep-alive timeout(如 60 55);可置于 http/server/location 块,优先级递减;典型值:高并发站点 15–30 秒,api 服务 45–60 秒;curl -i 可验证响应头是否含 keep-alive。

直接配置 keepalive_timeout 就能启用客户端与 Nginx 之间的 HTTP 长连接,实现 TCP 连接复用,避免每次请求都重连。
核心参数含义要清楚
keepalive_timeout 设置两个值:
- 第一个值(必需):Nginx 在服务端保持空闲连接打开的时间,单位秒。超时后主动关闭连接
- 第二个值(可选):写入响应头
Keep-Alive: timeout=N的数值,用于提示浏览器建议的复用时长
例如 keepalive_timeout 60 55; 表示:服务端最多等 60 秒,同时告诉浏览器“你最多可按 55 秒来复用”。
配置位置和生效范围
该指令可放在 http、server 或 location 块中,优先级从高到低:
- 放在
http块:全局默认值,所有虚拟主机继承 - 放在
server块:仅对该域名或 IP 的服务生效 - 放在
location块:只对匹配路径的请求生效(如静态资源可设更短)
推荐先在 http 块统一设置,再按需局部覆盖。
典型取值参考
没有万能值,需结合业务特点调整:
- 高并发 Web 站点(含大量小资源):15–30 秒 —— 平衡复用收益与连接堆积
- API 接口服务(请求间隔较稳定):45–60 秒 —— 减少移动端频繁建连开销
- 调试或压测阶段:设为
0可彻底禁用 keepalive,便于观察单请求行为 - 注意浏览器兼容性:Chrome/Firefox 通常尊重服务端 header,但 IE/旧版 Edge 实际上限常为 60 秒
验证是否生效
修改配置后重载 Nginx(nginx -t && nginx -s reload),用 curl 检查响应头:
curl -I https://your-domain.com/
若看到 Connection: keep-alive 且含 Keep-Alive: timeout=XX,说明配置已生效。再用 netstat -an | grep :80 | grep ESTABLISHED 观察连接复用情况。











