Nginx Keepalive 配置详解
什么是 Keepalive?
在 HTTP 协议中,keepalive(长连接)允许客户端和服务器在同一个 TCP 连接上进行多次请求和响应,避免频繁建立和断开连接,提高性能。
在 Nginx 里,keepalive 通常分为两类:
- 客户端 keepalive(即 HTTP keep-alive)
- 后端 upstream keepalive(nginx 作为反向代理,跟后端服务器之间的长连接)
一、客户端 Keepalive 配置
这是指客户端(浏览器/请求工具)与 Nginx 之间的长连接。
相关配置参数
http {
keepalive_timeout 75s 75s;
keepalive_requests 100;
...
}
参数说明
- keepalive_timeout
设置客户端空闲连接的超时时间(单位秒,默认为 75s)。- 第一个参数是超时时间;
- 第二个参数可选,指定
Keep-Alive: timeout=<N>响应头的值(设置给客户端的建议时间)。 - 例:
keepalive_timeout 60s 60s;
- keepalive_requests
控制每个长连接上允许的最大请求次数。到达这个数量后,连接会关闭。默认是 100。- 例:
keepalive_requests 100;
- 例:
二、Upstream Keepalive 配置
如果 Nginx 作为反向代理,需要与后端服务器(如 Tomcat、Node、Go 服务)保持连接,减少连接建立/销毁开销。
相关配置参数
upstream backend {
server 127.0.0.1:8080;
# 指定最多保留多少个与每个后端服务器的空闲连接
keepalive 32;
}
参数说明
- keepalive
指定与每个后端服务器保持的最大空闲长连接数。超出该数会关闭连接。- 例:
keepalive 16;
- 例:
proxy_http_version
如果要使用 HTTP/1.1 的长连接,需要设置:
proxy_http_version 1.1;
proxy_set_header Connection "";
三、完整示例
http {
keepalive_timeout 60s 60s;
keepalive_requests 100;
upstream backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
}
四、常见问题
- keepalive 不生效?
- 检查浏览器或客户端是否支持 keep-alive;


