Nginx对后端upstream server启用keepalive

Comments(0)


Posted on 2013-03-06 19:49:00 os


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 "";
        ...
    }
}
前一篇: tornado中计算etag的一个BUG 后一篇: tornado长连接断开的处理机制

Captcha:
验证码

Email:

Content: (Support Markdown Syntax)