sockjs XHR要求在Passenger / NGINX后面运行Meteor app 404

时间:2014-05-22 13:37:18

标签: nginx meteor passenger sockjs

我在nginx集成模式下与乘客一起运行捆绑的Meteor应用程序,除了sockjs回退到XHR请求之外,一切正常。

我在自己的应用排行榜示例中得到此行为(我还没有测试其他示例)。

您可以使用DISABLE_WEBSOCKETS环境变量禁用网络套接字来测试它。

该网站的我的nginx配置如下所示

server
{
    server_name             ng;
    root                    /var/www/mysitename/public;

    charset utf-8;

    passenger_enabled       on;
    passenger_set_cgi_param MONGO_URL mongodb://localhost:27017/mydbname;
    passenger_set_cgi_param ROOT_URL http://mysitename;
    passenger_set_cgi_param DISABLE_WEBSOCKETS 1;
    passenger_set_cgi_param PASSENGER_STICKY_SESSION true;
}

然后,当我访问该网站并在Chrome上的开发者控制台中打开网络面板时,我会收到类似这样的错误

...
POST http://mysitename/sockjs/158/ck8pi__5/xhr_send 404 (Not Found)
POST http://mysitename/sockjs/519/4hgc4rgr/xhr_send 404 (Not Found) 
POST http://mysitename/sockjs/672/6gq99fp5/xhr_send 404 (Not Found) 
POST http://mysitename/sockjs/682/sx0e2w_v/xhr_send 404 (Not Found)
...

基本上它继续创建新连接,就像它无法继续现有连接一样,这似乎只发生在XHR请求中,而不是websockets,因为我猜XHR需要粘性会话状态。

但我已启用了粘性会话(PASSENGER_STICKY_SESSION environmental variable)并在资源窗格中看到了会话Cookie,但它仍然存在相同的404问题。

我在Arch Linux 64位上使用Phusion Passenger版本4.0.40和Meteor 0.8.1.2。

1 个答案:

答案 0 :(得分:1)

Phusion Passenger作者在这里。这是由Phusion Passenger中的一个问题引起的,Github issue 1198详细记录了该问题。目标是在下一个版本4.0.45中完成所有这些工作。

粘性会话是必要的。我们将添加有关Meteor的文档以及启用粘性会话的必要性。