HTTP Keepalive是一种保持TCP连接在完成一次请求后不立即关闭,以便后续请求可以复用该连接的技术。在Nginx中正确配置Keepalive可以显著提高性能,减少TCP连接建立和关闭的开销。
在http
、server
或location
块中配置:
keepalive_timeout 65; # 设置保持连接的超时时间,单位秒
keepalive_requests 100; # 单个连接上允许的最大请求数
对于反向代理场景,可以配置与上游服务器的Keepalive连接:
upstream backend {
server backend1.example.com;
server backend2.example.com;
# 保持与上游服务器的连接池
keepalive 32; # 每个worker保持的最大空闲连接数
}
server {
location / {
proxy_pass http://backend;
proxy_http_version 1.1; # 必须使用HTTP/1.1
proxy_set_header Connection "";
# 其他代理相关配置...
}
}
keepalive_timeout
keepalive_timeout 65 60;
keepalive_requests
upstream keepalive
对于高流量网站:
keepalive_timeout 15; # 根据实际流量调整
keepalive_requests 1000;
对于API服务器:
keepalive_timeout 30s;
keepalive_requests 500;
对于反向代理:
upstream backend {
keepalive 64;
# ...其他配置
}
监控和调整:
netstat -an | grep ESTABLISHED
监控连接状态通过合理配置这些参数,可以显著提高Nginx服务器的性能和资源利用率。