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

Nginx反向代理Actix WebSocket遇404问题求助

问题分析与解决

你的Nginx配置确实存在问题,导致WebSocket请求返回404,核心原因是路径转发时的前缀处理错误:

当你用wss://my_domain.com/ws/client?token=xxx发起请求时,Nginx的location /ws会把完整路径/ws/client转发到后端的http://127.0.0.1:8181/ws/client,但你的Actix Web服务原本监听的是/client路径(本地用ws://server:8181/client就能正常连接),后端找不到/ws/client这个路由,所以返回404。

修复步骤

修改Nginx中location /ws块的proxy_pass配置,在地址末尾加上斜杠/:

location /ws {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header X-NginX-Proxy false;
    # 末尾添加斜杠,让Nginx去掉/ws前缀后转发路径
    proxy_pass http://127.0.0.1:8181/;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

添加斜杠后,Nginx会将/ws/client转换为/client转发到后端,和你本地测试的路径一致,这样Actix Web就能正确匹配WebSocket路由了。

验证操作

  1. 修改配置后,执行命令重新加载Nginx:
sudo nginx -s reload
  1. 重新发起WebSocket连接,检查是否能正常建立。

如果还有问题,可以查看Actix Web的服务日志,确认收到的请求路径是否为/client,进一步排查路由匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:33:01