2

我将 nginx 设置为 node.js 的代理,以进行长轮询,如下所示:

location /node1 {
access_log on;
log_not_found on;
proxy_pass http://127.0.0.1:3001/node;
proxy_buffering off;
proxy_read_timeout 60;
break;
}

不幸的是,大约一半的长轮询请求返回错误和空响应。我的 nginx 版本是 Dreamhost 提供的 v.0.8.53 版本,长轮询请求应该在服务器上排队约 30 秒。

情况是:

直接查询node.js,如:

curl --connect-timeout 60 --max-time 60 --form "username=User" http://127.0.0.1:3001/node/poll/2/1373730895/0/0

工作正常,但通过 nginx:

curl --connect-timeout 60 --max-time 60 --form "username=User" http://www.mydomain.com/node1/poll/2/1373730895/0/0

在一半情况下失败 - 失败的情况不会出现在 nginx access_log 中(成功的情况在那里)并且 curl 返回: curl:(52)来自服务器的空回复

它可能与更高的流量有关,而我在其他流量较低且应该具有非常相似设置的站点上还没有看到这一点。

我将非常感谢有关该问题的任何帮助或提示如何进一步调试它。

4

0 回答 0