Nginx 通过套接字保持与Unicorn的上行连接
Nginx 1.1.4+可以使用HTTP1.1keepalive指令服务上游连接,请参阅(它与keepalive客户端的连接不同)。因此,Unicorn配置可以如下所示:Nginx 通过套接字保持与Unicorn的上行连接,nginx,unicorn,Nginx,Unicorn,Nginx 1.1.4+可以使用HTTP1.1keepalive指令服务上游连接,请参阅(它与keepalive客户端的连接不同)。因此,Unicorn配置可以如下所示: upstream unicorn { server unix:/tmp/unicorn.todo.sock fail_timeout=0; keepalive 4; } server { try_files $uri/index.html $uri @u
upstream unicorn {
server unix:/tmp/unicorn.todo.sock fail_timeout=0;
keepalive 4;
}
server {
try_files $uri/index.html $uri @unicorn;
keepalive_timeout 70;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
HTTP连接需要这些头:代理\u HTTP\u版本和代理\u设置\u头
所以问题是配置是否有效,或者套接字连接本身是否是永久性的?是的,它是有效的。UNIX套接字和TCP/IP套接字在HTTP Keepalive方面没有区别。Unicorn在设计上不支持持久(保持活动)连接。因此,您不应该尝试使用到unicorn后端的持久(保持活动)连接。非常感谢!获得您对配置VBart的专业反馈也很好:“因为Unicorn只为快速发送响应体而设计,没有keepalive,所以套接字总是在附近刷新以防止延迟。”这是否意味着nginx上游连接过热?似乎是这样。和Mongrel一样,keepalive和Pipeline都不受支持。然后,unicorn的“keepalive”选项就没用了,并且会带来很小的处理开销。