Nginx Upstream Keepalive 分析 保持长连接

Posted 技术颜良

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx Upstream Keepalive 分析 保持长连接相关的知识,希望对你有一定的参考价值。

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性能提升对比

http://sohulinux.blog.sohu.com/180744817.html

以上是关于Nginx Upstream Keepalive 分析 保持长连接的主要内容,如果未能解决你的问题,请参考以下文章

keepalive学习笔记

Nginx升级Keepalive_Requests默认值变更

nginx upstream bakend 中的bakend代表啥意思啊?

NGINX配置

压测引起的 nginx报错 502 no live upstreams while connecting to upstream解决

nginx fair怎么检查网络状态