node.js - nginx 上的 Socket.io 404
问题描述
所以我浏览了很多帖子,网站,但仍然没有解决这个问题。
我以前在我的服务器上运行了一个项目,包括 socket.io,没有问题。
但是现在我将这个新项目上传到服务器,socket.io 似乎总是返回 404。
抱歉,如果我在这里忽略了一些明显的东西。
Nginx 配置:
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;
}
}
我的 socket.io 服务器:
const app = express();
const server = http.createServer(app);
const io = require('socket.io')(server);
server.listen(3000);
客户(哈巴狗):
script(src="/socket.io/socket.io.js")
请注意,上面的代码是我在阅读了关于这里、服务器故障以及几个地方的博客文章的很多问题后得出的结果。
我不记得在我使用的第一个位置为 socket.io 使用了第二个位置“标签”(这就是它的名字吗?)。
解决方案
代理通行证应该是:
location /socket.io/ {
proxy_pass http://localhost:3000/socket.io/;
...
}
有关详细信息,请参阅https: //medium.com/@ibraheemabukaff/how-to-proxy-websockets-with-nginx-e333a5f0c0bb...
推荐阅读
- java - 如何使用 Spring 和使用 XML 的 jdbcTemplate 设置多个数据源
- c++ - 在 Qt 中动态设置菜单的内容
- amazon-web-services - 在 aws 实例中的 ssh 中获得权限被拒绝
- r - 寻找缺失的配对组合
- powershell - 如何从 PowerShell 填充 CSV 中的单元格
- mysql - 在我的情况下,是否在相同数量的行中索引更多值会导致性能问题?
- node.js - 如果不存在,MongoDB 将默认值合并到每个文档
- c# - 使用“Moq”测试 webapi 控制器
- python - 计算熊猫系列中索引子集的总和
- android - 如何在 Android 中使用 root 创建/删除 /data/data 目录中的文件?