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

Nginx反向代理WebSocket报上游连接被拒,请求错走端口问题咨询

问题根因与解决方案

根因分析

本次错误的核心是Nginx的location前缀匹配规则导致请求被转发到错误端口:

  • 你配置的4000端口WebSocket规则仅匹配前缀为/api2的请求,其余前缀的请求会被/api或者/规则匹配,转发到3000端口
  • 错误日志中的apisocket.io路径是因为location /api的proxy_pass后带了/api路径:当请求路径为/api/socket.io时,Nginx会把匹配到的/api替换为proxy_pass后的/api,再拼接剩余路径/socket.io,最终拼接成错误的/apisocket.io路径

修复方案

根据你的实际使用场景二选一即可:

方案1:修改前端请求路径(无需修改Nginx配置)

如果你的WebSocket服务部署在4000端口的/api2路径下,直接把前端WebSocket请求路径改为/api2/socket.io即可,请求会自动匹配到对应规则转发到4000端口。

方案2:新增Nginx匹配规则(无需修改前端代码)

如果你不想修改前端请求路径,在当前Nginx配置的server块中新增如下优先级更高的规则即可:

# 匹配所有socket.io相关请求,优先级高于普通前缀匹配
location ^~ /api/socket.io {
    proxy_pass         http://localhost:4000;
    proxy_set_header   Host $host;
    proxy_redirect     off;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Host $server_name;
    # Websocket适配配置
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

配置修改完成后,执行nginx -t检查语法是否正确,确认无误后执行nginx -s reload重载配置即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:05