当前位置: 首页 > news >正文

Nginx 反代与 WebSocket 常见坑排查清单

这篇是工程型排障清单:遇到 WS 连不上时按这个顺序查,基本能定位到问题点。

先给结论

WebSocket 不通,99% 不是“框架坏了”,而是以下三类问题:

  1. 路径错了 / 被路由接管
  2. Upgrade 头没传进去
  3. 权限或跨域拦截

一、排查顺序(强烈建议按这个来)

  1. 确认访问路径是否命中后端
  2. 确认 Nginx 是否走了 WebSocket location
  3. 确认 Upgrade/Connection 头是否正确
  4. 确认后端握手是否返回 101
  5. 确认权限/登录态是否带上

二、最稳的 Nginx WebSocket 配置模板

map $http_upgrade $connection_upgrade { default upgrade; '' close; } location /ws/ { proxy_pass http://127.0.0.1:8123/ws/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $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_read_timeout 3600s; proxy_send_timeout 3600s; proxy_buffering off; }

三、最常见的 6 个坑

1) location 被 /api/ 抢走

如果 WebSocket 路径是/api/ws/...,必须有专用 location:

location /api/ws/ { ... }

并且放在/api/前面。


2) proxy_pass 路径写错

location /api/ws/ { proxy_pass http://127.0.0.1:8123/ws/; }

上面会把/api/ws/xxx改成/ws/xxx,后端 404。

正确写法:

proxy_pass http://127.0.0.1:8123;

3) 没有 Upgrade 头

没有这两行基本没戏:

proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade;

4) Cookie / Token 没带

WebSocket 也是握手 HTTP,如果依赖登录态:

  • 要保证 Cookie 能带上
  • 或直接 query 传 token

5) 后端返回 404/500

如果后端直接 404,说明路径没命中。
如果后端 500,多半是拦截器/权限校验失败。


6) http 与 https 混用

主站是 https 时,WebSocket 必须用wss://
否则浏览器会直接拦截。


四、快速自检命令

curl-i-N\-H"Connection: Upgrade"\-H"Upgrade: websocket"\"http://127.0.0.1:8123/ws/app/edit"

看到101 Switching Protocols才算后端 OK。


最后总结

排 WebSocket 先别猜,按“路径 → 头 → 状态码”三步走,
基本能在 5 分钟内定位问题。

http://www.cnnetsun.cn/news/1723237.html

相关文章:

  • TranslucentTB终极指南:3步打造Windows任务栏透明化美学桌面
  • Claude 4小时血洗全球最安全系统,人类最后防线失守
  • iOS Charts库实战:3步搞定股票K线图+MACD指标联动(附完整代码)
  • UnrealPakViewer:虚幻引擎资源分析与Pak文件解析工具指南
  • 【核磁共振成像】临床常用脉冲序列优化与应用场景解析
  • 飞书机器人接入OpenClaw:千问3.5-35B-A3B-FP8实现群聊问答自动化
  • SQL代码质量守护神:sql-lint实现数据库开发效率革命性突破
  • 突破单机限制:Nucleus Co-Op如何让单人游戏秒变多人同屏体验
  • 免费开源毕设:基于 YOLO 的佩戴口罩检测系统
  • 番茄小说下载器:终极开源工具,轻松构建个人数字图书馆 [特殊字符]
  • 如何通过ComfyUI_essentials插件解锁ComfyUI的AI绘图增强功能?
  • SDMatte镜像合规性说明:符合《生成式AI服务管理暂行办法》数据本地化要求
  • OpenClaw效率对比:Qwen3-32B私有镜像vs云端API任务执行速度
  • 从零到一:基于快马平台构建智能车队监控管理实战应用
  • 告别文书阅读焦虑:用快马平台打造基于openlaw理念的高效法律案例分析系统
  • 新手福音:用快马ai生成ubuntu安装openclaw的零基础图文教程
  • Windows USB设备访问与控制开发指南:UsbDk技术详解
  • 告别EEPROM!用FRAM FM25W256给你的GD32F303项目做个不掉电的‘记事本’(附SPI配置避坑指南)
  • BililiveRecorder录播姬完全指南:从功能解析到场景落地
  • 绝地求生压枪难题如何破解?5个核心技巧让罗技鼠标宏成为你的制胜法宝
  • 用快马平台十分钟搭建全球数据监控仪表盘原型
  • 从开发到上线,基于快马平台构建可部署于ubuntu24.04的django博客系统
  • 智慧农业之梨树识别数据集 果树识别 水果检测 梨子识别数据集 梨子识别数据集第10643期
  • 简化边缘增强模块改进YOLOv26轻量级边缘检测与残差融合双重突破
  • 3步加速Dear ImGui界面开发:ImStudio可视化设计工具全解析
  • 射频信号设计避坑指南:为什么50欧姆阻抗、加粗走线和挖空参考如此重要?
  • DecompilerMC:解锁Minecraft源码探索的反编译解决方案
  • HXPhotoPicker终极指南:打造专业级iOS图片视频选择器的5个必知技巧
  • Cosmos-Reason1-7B入门必看:图像/视频理解+CoT链式推理零基础上手
  • Real-ESRGAN图像增强神器:让模糊照片瞬间清晰的专业指南