Windows nginx+;nodejs API,已达到代理连接超时

Windows nginx+;nodejs API,已达到代理连接超时,windows,node.js,express,nginx,restify,Windows,Node.js,Express,Nginx,Restify,我有一个依赖nodejs和restify的restfulapi。 这是在8989港送达的 我让nginx监听端口444,我有一个像这样的代理传递 location /v1/ { proxy_pass http://localhost:8989; } 有没有打过类似的电话 http://localhost:444/v1/hello http://localhost:8989/v1/hello 很好,但只是第一次。第二次它正好在60秒后响应

我有一个依赖nodejs和restify的restfulapi。 这是在8989港送达的

我让nginx监听端口444,我有一个像这样的代理传递

    location /v1/
    {       
        proxy_pass http://localhost:8989;
    }
有没有打过类似的电话

http://localhost:444/v1/hello
http://localhost:8989/v1/hello
很好,但只是第一次。第二次它正好在60秒后响应。 如果您取消请求并重试,那么它将再次工作,但下一次将是相同的。因此,在每次成功呼叫后,都会有一个呼叫延迟60秒

只有当服务在NodeJ上运行时才会发生这种情况。我曾尝试将API框架更改为express和Percolator js,但也存在同样的问题。然而,当我尝试使用C#NancyFx API时,这个问题并没有发生

另外,如果您试图直接访问服务,这类似于

http://localhost:444/v1/hello
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传递完全相同的头。当时的配置是:

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;
    }
}
我已经让它将完全相同的头传递给nodejsrestify服务器,但是行为与以前完全相同

我正在使用nodejs和nginx的windows版本

编辑 我用电脑打了补丁

proxy_connect_timeout 2s;
就像这里的其他人一样


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

在另一个端口中侦听有什么意义?为什么不直接调用8989?您是否尝试使用另一个服务器名称和侦听端口?(根据此配置主机文件)。传递所有代理调用的主要原因是为了避免跨源资源共享。是的,我尝试了不同的服务器名称和端口。