语法:keepalive <connections>;
上下文:upstream
激活Nginx worker到upstream服务器的连接的缓存。
connections参数用来设置连接池中空闲的连接的最大数量,这些连接会被保存在每个worker的缓存中。当连接数量达到这个值的时候,后续建立的连接不会被缓存(在使用完之后,就会关闭)。
需要特别注意的是:keepalive指令不会限制nginx worker进程到upstream服务器的连接的总数。
下面是使用keepalive连接的memcached upstream的示例配置:
upstream memcached_backend { server 127.0.0.1:11211; server 10.0.0.2:11211; keepalive 32; } server { ... location /memcached/ { set $memcached_key $uri; memcached_pass memcached_backend; } }
对于HTTP协议,proxy_http_version
指令应该被设置为1.1,“Connection”头应该被清空:
upstream http_backend { server 127.0.0.1:8080; keepalive 16; } server { ... location /http/ { proxy_pass http://http_backend; proxy_http_version 1.1; proxy_set_header Connection ""; ... } }
可以通过传递“Connection: Keep-Alive”头,来使用HTTP/1.0的持久化连接,但是并不推荐使用这种方式。
对于FastCGI服务器,为了使用keepalive连接,需要设置fastcgi_keep_conn
:
upstream fastcgi_backend { server 127.0.0.1:9000; server 127.0.0.1:9001; keepalive 8; } server { ... location /fastcgi/ { fastcgi_pass fastcgi_backend; fastcgi_keep_conn on; ... } }
当不使用默认的round-robin算法,而是使用其他的负载均衡算法时,应该在keepalive指令之前,激活它们。
SCGI和uwsgi协议没有keepalive连接的概念。