长连接(Keep-Alive)是指客户端与服务器建立TCP连接后,可以在一个连接上发送多个请求/响应,而不是每次请求都重新建立连接。这能显著减少TCP握手开销,提高性能。
在Nginx配置中启用HTTP keepalive:
http {
keepalive_timeout 65; # 保持连接的超时时间(秒)
keepalive_requests 100; # 单个连接上允许的最大请求数
}
这是实现高效反向代理的关键部分:
upstream backend {
server backend1.example.com;
server backend2.example.com;
# 保持连接的关键参数
keepalive 32; # 每个worker保持的空闲连接数
keepalive_timeout 60s; # 空闲连接保持时间
}
server {
location / {
proxy_pass http://backend;
# 以下是支持长连接的关键代理设置
proxy_http_version 1.1; # 必须使用HTTP/1.1
proxy_set_header Connection ""; # 清除Connection头
# 其他可选优化设置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
proxy_http_version 1.1:
proxy_set_header Connection "":
upstream中的keepalive:
keepalive_timeout:
调整keepalive连接数:
keepalive
值监控连接使用情况:
# 查看Nginx活跃连接状态
netstat -anp | grep nginx | grep ESTABLISHED | wc -l
日志记录:
$upstream_addr
变量,监控后端连接使用情况压力测试:
ab -k -c 100 -n 10000 http://your-nginx-server/
连接不保持:
proxy_http_version 1.1
Connection
头被清空后端服务器不支持长连接:
连接泄漏:
通过以上配置,Nginx反向代理可以高效地支持长连接,显著提升系统性能。