在Nginx中配置upstream的keepalive可以显著提高反向代理的性能,减少TCP连接的建立和关闭开销。以下是详细的配置方法:
在upstream块中启用keepalive:
upstream backend {
server backend1.example.com;
server backend2.example.com;
# 启用keepalive连接池
keepalive 32; # 保持的连接数
}
然后在对应的location或server块中使用:
server {
location / {
proxy_pass http://backend;
# 启用HTTP keepalive
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
keepalive:指定每个worker进程与upstream服务器保持的最大空闲连接数
proxy_http_version 1.1:强制使用HTTP/1.1协议,支持keepalive
proxy_set_header Connection "":清除Connection头,防止干扰
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 32;
keepalive_timeout 60s; # 空闲连接保持时间
keepalive_requests 1000; # 单个连接最大请求数
}
可以通过Nginx的stub_status模块监控keepalive连接:
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
访问该接口可以看到Active connections中包含keepalive连接数。
通过合理配置keepalive,可以显著减少TCP握手和TLS协商的开销,提高代理性能。