我试图在nginx下运行我的应用程序(使用socket.io),我在服务器端得到一个WebSocket connection to 'ws://...' failed: Unexpected response code: 502
错误。我读到nginx自v.1.3
以来支持websockets,所以我只是升级到nginx v1.4.1 (stable)
。
下面是我的配置文件:
server {
listen 80;
server_name website.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
access_log /var/log/nginx/website/access.log;
error_log /var/log/nginx/website/error.log;
}
}
更新:我不得不说我可以到达应用程序(所以我确实监听端口3000)和套接字。io正在工作,除非这个错误,但在某些情况下,emit
调用不发送任何参数,所以我得到undefined
。
我在这里错过了什么来避免这个错误?
我已经找到了一些方法来避免这个错误:
io.set('transports', ['xhr-polling']);
所以插座。io现在做AJAX调用,它做的工作,但肯定的方式要慢得多,所以如果有人有这个问题的真正关键,我仍然非常感兴趣!