华子的代码空间

逆水行舟,不进则退。 关注系统编程、网络编程、并发、分布式。

Nginx对后端upstream server启用keepalive

Nginx upstream目前只有短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connection" header设为"close"。Nginx与前端的连接默认为长连接,一个用户跟Nginx建立连接之后,通过这个长连接发送多个请求。如果Nginx只是作为reverse proxy的话,可能一个用户连接就需要多个向后端的短连接。如果后端的服务器(源站或是缓存服务器)处理并发连接能力不强的话(比如单进程的squid),就可能导致瓶颈的出现。

 

从nginx 1.1.4 开始有了原生的ngx_http_upstream_keepalive 模块 和"proxy_http_version" fastcgi_keep_conn" 等指令
,所以后端的keepalive也在nginx 1.2.0成为现实

 

 

HTTP 1.0实现长连接需要设置请求头部Connection: keep-alive。

但是在HTTP 1.1 中已经不需要了。

所以在nginx中这样配置:

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 "";
        ...
    }
}

 

posted on 2013-03-06 19:49  华子的代码空间  阅读(2886)  评论(0编辑  收藏  举报

导航