Node.js nginx上的Socket.io 404
所以我已经浏览了很多帖子和网站,但仍然没有解决这个问题 我以前有一个项目在我的服务器上运行,包括socket.io,没有问题 但是现在我将这个新项目上传到服务器上,socket.io似乎总是返回404 对不起,如果我忽略了一些显而易见的事情 Nginx配置:Node.js nginx上的Socket.io 404,node.js,nginx,socket.io,Node.js,Nginx,Socket.io,所以我已经浏览了很多帖子和网站,但仍然没有解决这个问题 我以前有一个项目在我的服务器上运行,包括socket.io,没有问题 但是现在我将这个新项目上传到服务器上,socket.io似乎总是返回404 对不起,如果我忽略了一些显而易见的事情 Nginx配置: server { listen 80 default_server; listen [::]:80 default_server; index index.html index.htm index.nginx-de
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html index.htm index.nginx-debian.html;
server_name localhost;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /demo/ {
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
location /socket.io/ {
proxy_pass http://localhost:3000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NginX-Proxy true;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
My socket.io服务器:
const app = express();
const server = http.createServer(app);
const io = require('socket.io')(server);
server.listen(3000);
客户(帕格):
请注意,上面的代码是我在阅读了很多关于here、serverfault的问题以及一些地方的博客文章后得出的结论
我不记得在我使用的第一个socket.io中使用了第二个位置“tag”(就是它的名字吗?)。给你的Nginx一个服务器名
localhost
,然后尝试proxy\u pass
给localhost可能对你没有任何好处
尝试摆脱服务器名称localhost完全编码>并更改所有这些:
proxy\u passhttp://localhost:xxxx;代码>
为此:
proxy\u passhttp://127.0.0.1:xxxx;代码>
或者,如果要正确执行,请在服务器块外创建上游指令:
上游socketserver{
服务器127.0.0.1:3000;
}
并将您的proxy\u pass
指令更改为:
proxy\u passhttp://socketserver/;代码>代理通行证应为:
location /socket.io/ {
proxy_pass http://localhost:3000/socket.io/;
...
}
有关详细信息,请参见…您好,谢谢您的回答。不幸的是,它不起作用,我在尝试加载socket.io时仍然得到404。在另一个站点加载,但保持这种配置实际上是可行的,所以我很有信心这是我的socket.io设置中的一个错误,但这似乎也是一样的。是这个文件返回404,还是任何到套接字服务器的连接script(src=“/socket.io/socket.io.js”)
似乎是每个连接,文件本身不返回404,是否对此有任何更新?
location /socket.io/ {
proxy_pass http://localhost:3000/socket.io/;
...
}