Nginx Upstream長連接由upstream模式下的keepalive指令控制,並指定可用於長連接的連接數,配置樣例如下:
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 "";
...
}
}
目前Nginx只支持反向代理到upstream下配置的server,不支持直接由proxy_pass指令配置的server,更不支持proxy_pass參數中包含變量的情況。此外,為支持長連接,需要配置使用HTTP1.1協議(雖然HTTP 1.0可通過設置Connection請求頭為“keep-alive”來實現長連接,但這並不推薦)。
此外,由於HTTPPROXY模塊默認會將反向代理請求的connection頭部設置成Close,因此這里也需要清除connection頭部(清除頭部即不發送該頭部,在HTTP 1.0中默認為長連接)。
問題:nginx與后端upstream下面的服務器建立的都是短鏈接。這樣nginx往upstream后端發請求時,也會消耗很多的時間與帶寬,如果讓nginx與upstream后端建立起長鏈接,從nginx發起的請求就可以挑選一個合適的長鏈接發往upstream后端服務器,這樣即可以節省帶寬,也可以提高響應速度。
1、關於nginx upstream長鏈接的介紹及具體的實現方式
http://bollaxu.iteye.com/blog/900424
2、使用nginx keepalive,網站TPS性能提升對比