Nginx 通过套接字保持与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

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 @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”选项就没用了,并且会带来很小的处理开销。