无法连接到socket.io服务器

时间:2019-01-04 14:50:58

标签: nginx socket.io nginx-reverse-proxy

我已设置NGINX,以将请求example.com路由到服务前端的3000端口上的nodejs服务器,并将example.com/api路由到端口3001上的nodejs API服务器。

我尝试连接到端口3001上的套接字,例如:

const socket = openSocket('example.com/api');

但是控制台出现错误:

polling-xhr.js:265 POST https://example.com/socket.io/? 
EIO=3&transport=polling&t=MWPLGiL 404 (Not Found)

socket.io似乎仍在尝试仅连接到example.com。 知道为什么/ api被忽略吗?由于该服务器已配置为处理套接字连接,因此我需要转到example.com/api。如果有人可以帮助我,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我通过在NGINX配置中添加以下内容解决了该问题:

 location ~ ^/(api|socket\.io) {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:3001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 900s;
}

很抱歉,您在不提出更多问题的情况下提出问题。希望这对其他人有所帮助。