nginx代理webSocket请求

1、webSocket IP访问

一个web版的SSH工具,通过IP访问是正常的,如下:

2、nginx代理访问失败

代理配置如下:

这是简单代理http请求的配置

复制代码
#gowebssh
server {
   listen 80;
   server_name ssh.shuizhu.vip;
   location / {
      proxy_pass http://116.205.237.115:31736;
   }
}

在连接Linux终端时,连接失败,按F12打开浏览器控制台,发现报错:

报错中提示ws://,证明是websocket类型的请求代理是失败的!

WebSocket connection to 'ws://ssh.shuizhu.vip/api/ssh/conn?h=17&w=198&session_id=qe7hwqm7598bdbf&Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MSwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxNjc4MDMzOH0.PSvWqUD4lcFyEWaLWQLC9ILBoa98Zymwy06ka33Pa1w' failed: Error during WebSocket handshake: Unexpected response code: 400

3、nginx代理websocket访问

步骤2中的nginx,只是配置了http类型的代理请求,对于websocket类型并没有配置,正确配置如下:

复制代码
#gowebssh
server {
    listen 80;
    #location /api/ssh/conn代理必须在前面,否则会被下方的location /取代
    #目的是为了请求中存在/api/ssh/conn优先转发到该块配置中
    location /api/ssh/conn {
        proxy_pass http://116.205.237.115:31736/api/ssh/conn; #这里是http不是ws,不用怀疑,代理的ip和port写ws访问的实际地址
        proxy_http_version 1.1; #这里必须使用http 1.1
        #下面两个必须设置,请求头设置为ws请求方式
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    server_name ssh.shuizhu.vip;
    location / {
        #proxy_pass http://116.205.237.115:31736;
        proxy_pass http://192.168.5.83:31736;
    }
}

注意:通过报错得知:我的websocket类型的url中,带有/api/ssh/conn(其他的websocket请求,按实际配置即可),因此在localion中配置即可,并代理至对应:http://IP:PORT/api/ssh/conn

4、重启nginx

复制代码
nginx -s reload

5、测试

相关推荐
春风有信7 分钟前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器
2401_873479401 小时前
断网时如何实时判断IP归属?嵌入本地离线库,保障风控不中断
运维·服务器·网络
守城小轩1 小时前
基于Chrome140的Yahoo自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
handler012 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
日取其半万世不竭3 小时前
LVM 逻辑卷管理:不停机扩容磁盘的正确方式
运维·服务器
优化Henry4 小时前
TDD-LTE站点Rilink=3链路故障处理案例---BBU侧C口“有发光、无收光”的排查与恢复
运维·网络·信息与通信·tdd
浪客灿心4 小时前
Linux网络传输层协议
linux·运维·网络
V搜xhliang02464 小时前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化
遇见火星5 小时前
Nginx限流配置:防止接口被刷,服务器稳如泰山
运维·服务器·nginx
计算机安禾5 小时前
【Linux从入门到精通】第49篇:服务器故障排查终极指南——思路决定出路
linux·运维·服务器