Nginx upstream与后端的连接默认为短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connection" header设为"close"。Nginx与前端的连接默认为长连接,一个用户跟Nginx建立连接之后,通过这个长连接发送多个请求。如果Nginx只是作为reverse proxy的话,可能一个用户连接就需要多个向后端的短连接。如果后端的服务器(源站或是缓存服务器)处理并发连接能力不强的话,就可能导致瓶颈的出现。
关键参数
在location中添加
proxy_set_header Connection “”;
proxy_http_version 1.1;
在upstream 中添加
keepalive 时间s;
一个完整的让upstream支持长连接的配置示例如下:
upstream www.aaa.com {
server 127.0.0.1:8080;
keepalive 16;
}
upstream www.bbb.com {
server 127.0.0.1:8090;
keepalive 16;
}
location / {
proxy_pass http://www.aaa.com;
proxy_set_header Connection “”;
proxy_http_version 1.1;
proxy_set_header Host $host;
}