Nginx 的 keepalive 配置到底该怎么写才生效?
我在用 Nginx 做反向代理,后端是 Node.js 服务。最近发现连接复用好像没生效,每次请求都新建 TCP 连接,延迟很高。我查了文档,在 upstream 里加了 keepalive 32;,但用 tcpdump 抓包还是看到频繁的 FIN 包。
我的配置大概是这样:
upstream backend {
server 127.0.0.1:3000;
keepalive 32;
}
server {
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
是不是漏了什么关键配置?为什么 keepalive 没起作用?
proxy_set_header Connection "";得放在 server 块或 http 块级别,location 块里有时候不生效。另一个可能是 Node.js 那边没开 keepalive。改成这样试试:
如果还不行,检查下 Node.js 那边的
http.createServer是不是用了keepAliveTimeout参数,默认是 5 秒,太短的话连接会被服务端主动关闭。