keepalive_timeout需按业务场景差异化设置:静态资源10–30秒、常规Web 45–60秒、移动端API 5–15秒、长连接60–300秒、高并发网关≤5秒;须同步配置keepalive_requests、upstream keepalive及HTTP/1.1头部支持,并通过响应头、连接数和stub_status验证实效。

keepalive_timeout 不是越大越好,也不是越小越省资源,关键是让连接“够用但不积压”——它控制 Nginx 与客户端之间空闲连接的等待时长,直接影响复用效率、文件描述符占用和并发承载能力。
按业务类型选基础值
不同访问模式对连接复用的需求差异明显,不能统一设 75 秒:
- 静态资源服务(CDN、图床、前端 JS/CSS/图片):用户连续请求密集,但页面加载完后很快空闲,建议 10–30 秒
- 常规 Web 站点(PC 浏览器访问 HTML + 小资源):匹配主流浏览器行为,推荐 45–60 秒
- 移动端 API(App 后端、网络不稳定、常切后台):易受 NAT 断连影响,建议 5–15 秒;混合接口可压到 10–20 秒
- 长连接场景(SSE、WebSocket 升级前代理、内网微服务调用):需配合后端保活机制,可设 60–300 秒,但必须确认上下游超时协同
-
高并发低延迟网关(如实时推送、消息中台):连接数敏感,建议 ≤ 5 秒,并启用
reset_timedout_connection on;
两个数值都要理解清楚
语法是 keepalive_timeout timeout [header_timeout];:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 第一个值(必填):Nginx 主动关闭空闲连接的等待时长(秒),决定实际资源释放时机
- 第二个值(可选):写入响应头
Keep-Alive: timeout=N的提示值,仅作客户端参考,建议比第一个值小 5–10 秒 - 例如:
keepalive_timeout 60 55;表示服务端最多等 60 秒,同时告诉浏览器“你按 55 秒来复用”
必须同步配齐的三项
单改 keepalive_timeout 效果有限,以下配置缺一不可:
- keepalive_requests:限制单连接最大请求数,防止单个慢请求或异常响应卡死连接。默认 100 偏保守,API 场景建议 200–500,静态服务可设 1000–5000
-
upstream keepalive:若用
proxy_pass,必须在 upstream 块中显式启用,如keepalive 32;。该值应为后端单实例并发能力的 60%~80%(例:Tomcat maxConnections=200 → 设 120–160) -
协议与头部支持:location 中必须有
proxy_http_version 1.1;和proxy_set_header Connection '';,否则后端无法复用连接
验证是否真正生效
上线后不能只看配置写了没,要观测真实指标:
- 用
curl -I https://your.site/查响应头,确认含Connection: keep-alive和Keep-Alive: timeout=XX - 用
ss -tnpo | grep :端口 | grep ESTAB | wc -l观察 ESTABLISHED 连接数趋势:稳定在合理区间说明复用已建立 - 检查
nginx_stub_status中 Waiting 状态占比:过高(如 >30%)说明空闲连接积压,复用率低 - 关注 error log 是否频繁出现
upstream prematurely closed connection或502 Bad Gateway,这往往是上下游超时不匹配信号


















