nginx连接后端服务时,使用upstream的方式,并且设置keepalive可以建立长连接,减少创建连接的消耗,提升效率。
但是,nginx默认采用http1.0协议,如果后端没有返回Connection:keepalive的header,设置的长连接是不生效的,大并发下会出现大量time_wait的连接。
两种解决方案:
1、后台服务在response header中加Connetion:keepalive
2、在nginx配置中显示指明http1.1协议(默认长连接),并且设置header Connnction=""
location ~ /XXX {
....
proxy_http_version 1.1;
proxy_set_header Connection "";
}