我将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)来自服务器的空回复
它可能与更高的流量连接,而且我还没有在流量较低的其他网站上看到它,并且应该具有相似的设置。
我将非常感谢有关该问题的任何帮助或暗示如何进一步调试它。