语法: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连接的概念。