Windows nginx + nodejs API,proxy_connect_timeout已到达

我有一个依赖于nodejs和restify的RESTful API。 它正在8989端口服务。

我有nginx听444端口,我有这样的代理通行证

location /v1/ { proxy_pass http://localhost:8989; } 

任何呼叫类似的东西

 http://localhost:444/v1/hello 

工作正常,但只是第一次。 第二次恰好在60秒后响应。 如果您取消请求并再次尝试,那么它会再次运行,但下一次将会一样。 所以,每次成功的通话之后都会有一个延迟60秒。

只有在服务在nodejs上运行时才会发生。 我曾尝试改变API框架来expression和Percolator js,并有同样的问题。 但是,当我尝试与C#NancyFx API此问题不会发生。

此外,如果您尝试直接访问服务,那是类似的

 http://localhost:8989/v1/hello 

它总是看起来很好。

在查看发送到retify服务器的头文件后,我发现接下来的两件事,通过nginx代理调用它时,有两个头文件:

 GET /v1/menu/esp.json HTTP/1.0 connection: close 

当直接调用它时,有两个标题

 GET /v1/menu/esp.json HTTP/1.1 connection: keep-alive 

鉴于此,我认为restify服务器延迟了下一次调用,因为现在为时尚早。

所以我做了必须让nginx传递完全一样的头文件。 那么configuration是:

 upstream services { server localhost:8989; keepalive 100; } server { listen 444; server_name localhost; location /v1/ { proxy_http_version 1.1; proxy_set_header Host localhost:8989; proxy_set_header Connection keep_alive; proxy_pass http://services; } } 

我已经得到它传递完全相同的标题到nodejs restify服务器,但行为是完全一样的比以前。

我使用的是nodejs和nginx的windows版本。

编辑

我使用补丁

 proxy_connect_timeout 2s; 

正如其他人在这里http://forum.nginx.org/read.php?15,239760,247173

这似乎是一个已知的问题。