You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理socket.io服务时请求socket.io.js返回404故障排查

404错误触发原因
  1. Nginx配置中location /和location /socket.io/块都添加了try_files $uri $uri/ =404规则,该规则优先级高于反向代理转发规则,Nginx会优先查找本地磁盘对应路径的文件,找不到就直接返回404,不会将请求转发给运行在5000端口的Node服务,因此/socket.io/socket.io.js请求直接被拦截返回404。
  2. location /socket.io/的proxy_pass配置存在路径拼接错误,socket.io服务本身会处理/socket.io前缀的请求,不需要在proxy_pass地址后额外拼接/socket.io路径,否则会导致路由匹配失败。
  3. 缺少socket.io WebSocket握手必须的配置项,未关闭相关请求缓存,也可能导致请求异常。
解决方案

直接修改Nginx配置,替换原有location /和location /socket.io/块内容即可,静态资源匹配的规则可以保留不变:

location /socket.io/ {
    proxy_pass http://localhost:5000;
    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-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
}

location / {
    proxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://localhost:5000;
}

修改完成后按顺序执行以下操作:

  • 执行nginx -t检查配置语法是否正确,确认返回success提示
  • 执行nginx -s reload重载Nginx配置
  • 重启Node服务,清空浏览器缓存后重新访问即可恢复正常

你的服务端代码、前端引入socket.io.js的写法没有问题,修改Nginx配置后即可解决404报错。

内容的提问来源于stack exchange,提问作者Diego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:00:04