springboot项目使用websocket功能,使用了nginx反向代理后连接失败问题解决

SpringCloud项目里WebSocket连不上?别急着改代码,先检查Nginx转发配置(附完整排查流程) 本文详细解析了SpringCloud项目中WebSocket连接失败的常见原因及解决方案,重点排查Nginx转发配置问题。通过协议升级验证、Nginx关键配置检查和全链路诊断工具,帮助开发者快速定位并修复`Error: Unexpected server response`等错误,确保WebSocket服务稳定运行。 阅读详情

在本地服务器可以正常连接
在这里插入图片描述
放到生产环境后连接失败
在这里插入图片描述
解决方法:添加websocket代理配置

proxy_http_version 1.1; # 必须使用HTTP/1.1
proxy_set_header Upgrade $http_upgrade; # 传递Upgrade头
proxy_set_header Connection "upgrade"; # 将Connection头设置为"upgrade"

nginx.conf完整配置


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  www.mytest.com;

        # 将所有的HTTP请求重定向到HTTPS
        return 301 https://$server_name$request_uri;
    }

    # HTTPS server
    server {
        listen       443 ssl;
        server_name  www.mytest.com;

        ssl_certificate      D:/nginx-1.26.3/ssl/www.mytest.com.crt;
        ssl_certificate_key  D:/nginx-1.26.3/ssl/www.mytest.com.key;

        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /api/ {
            # 指定要代理到的目标服务器地址
            proxy_pass http://192.168.1.22:8080/;

            # 以下是WebSocket代理的核心配置
            proxy_http_version 1.1; # 必须使用HTTP/1.1
            proxy_set_header Upgrade $http_upgrade; # 传递Upgrade头
            proxy_set_header Connection "upgrade"; # 将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; # 告诉后端这是HTTPS请求

            # 建议增加超时时间,因为WebSocket是长连接
            proxy_read_timeout 3600s; # 1小时
            proxy_send_timeout 3600s;
            proxy_connect_timeout 30s;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

如果是http写使用wx://www.xxx.com,https协议使用wss://www.xxx.com

在这里插入图片描述

【Nginx】前后分离项目,nginx转发websoket失败 以上,只是解决了转发的问题,实际上它还是存在长连接问题。但是,这不适用于反向代理,因为客户端不知道任何代理服务器,并且需要在代理服务器上进行特殊处理。由于现在大多数项目都是前后分离开发的,很多时候都不是直接对后端项目进行请求,而且经过了Nginx代理转发请求。公网ip经过nginx代理,nginx代理默认不支持长连接,而wobsocket是基于长连接实现的.),这样也可以保持连接不断,时间可以根据proxy_read_timeout来设置定时推消息。Vue.js 定时发送消息。 阅读详情

相关推荐

WebSocket 部署服务器连接失败排查:Nginx 代理与 Tomcat 配置实战

WebSocket 是一种基于 TCP 的全双工通信协议,通过 HTTP 握手升级实现持久连接,广泛应用于实时消息推送、在线协作等场景。其核心原理是客户端发送包含 Upgrade 头的握手请求,服务端返回 101 状态码完成协议切换。在工程实践中,反向代理和连接器配置不当常导致握手失败或连接超时,尤其 Nginx 未透传 Upgrade 头、Tomcat 连接器超时设置不合理时,问题尤为突出。排查需从握手响应码入手,逐层验证代理层与后端服务,确保长连接稳定。

weixin_29243279的博客 106

nginx反向代理WebSocket

WebSocket协议相比较于HTTP协议成功握手后可以多次进行通讯,直到连接被关闭。但是WebSocket中的握手和HTTP中的握手兼容, 它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。这使得WebSocket程序可以更容易的使用现已存在的基础设施。 WebSocket工作在HTTP的80和443端口并使用前缀ws://或者wss...

zzhongcy的专栏 3012

提示deepseek生成完整的json用于对接外部API

通过精准的提示词设计(字段过滤、格式约束)、动态验证机制(自检与修正)和官方模板参考,可有效确保DeepSeek生成的JSON纯净无冗余。

神棍之路 2308

nginx代理websocket连接不上

遇到一个,就是域名加上nginx代理后怎么都连接不上的问题。 网上的配置都搞好后发现后端能接收到请求,但是怎么都不能从后端发送出去。改代码,调配置捣鼓一下午,还是不行

liujia_It的博客 2119

12V INPUT电源电路设计中的关键保护机制解析【精简】

本文深入解析了12V INPUT电源电路设计中不可或缺的关键保护机制。针对常见的电源反接、过压及浪涌等风险,文章详细拆解了PMOS防反接、TVS过压钳位、OVP芯片关断以及快速断电电路等核心防护方案的设计原理、选型要点与实战优化技巧,旨在帮助工程师构建可靠、经济的电源前端防御体系。

weixin_29158047的博客 228

Windows 24H2升级后eNSP AR_40报错40?VirtualBox虚拟化修复指南

虚拟化技术通过Hypervisor在操作系统与硬件间建立抽象层,使虚拟机能够共享物理资源。其核心原理依赖CPU的VT-x/AMD-V指令集,而Windows 24H2对内核隔离与驱动签名的强化会直接占用或拦截这些虚拟化资源。在工程实践中,VirtualBox作为Type-2型Hypervisor,常因内存完整性开启或版本过旧导致虚拟网卡创建失败,进而引发设备启动中断。典型场景包括网络仿真实验、多系统测试环境搭建等。当eNSP的AR_40路由器依赖VirtualBox引擎时,24H2的安全策略变更便会触发错误

weixin_34375251的博客 216

nginx websocket wss 连接失败 failed_Nginx 配置WSS 解析与实战

Nginx 配置WSS 解析与实战1. 几个关键概念1.1 WebSocketWebSocket 协议是 html5 的一种通信协议,该协议兼容我们常用的浏览器。例如:Chrome、Firefox、IE 等。它可以使客户端和服务端双向数据传输更加简单快捷,并且在TCP连接进行一次握手后,就可以持久性连接,同时允许服务端对客户端推送数据。外加传统模式的协议一般HTTP轻轻可能会包含较长的头...

weixin_39525243的博客 5137

银河麒麟V10ARM架构服务器离线安装docker\nacos【附安装包】

本文分享了在银河麒麟ARM64操作系统上安装Docker和Nacos的完整过程。首先提供了Docker的自动化安装脚本,包含服务配置、存储路径设置等关键步骤,并给出了常用维护命令。接着详细介绍了通过Docker-compose部署Nacos的方法,包括镜像导入、配置文件修改、鉴权设置等注意事项,特别强调了密钥长度必须超过32个字符的要求。文章还提供了Nacos初次登录的注意事项,并预告了后续可能推出的Redis、Nginx等安装教程。所有配置文件和脚本均可直接下载使用,适合内网环境下国产操作系统的部署

weixin_39054697的博客 2344

前端WebSocket连接失败问题解决方案

本文介绍了在使用 WebSocket 时,外部客户端无法连接服务的排查与解决过程。问题的根源在于前端项目中 WebSocket 的连接地址被硬编码为内部地址(如 localhost 或 WSL 内部地址),导致外部客户端无法正常访问。通过将连接地址修改为客户端实际可访问的服务器 IP 和端口(例如 ws://192.168.0.100:33080/ws/),成功解决了连接失败的问题。

damnItHUA的博客 2512

Python跨年烟花(完整代码)

Python语言实现跨年烟花动画的完整代码。

AIGC 3万+

open3d将某一时间序列下的彩色图和深度图批量转换成点云(python)

必备条件需要3D相机生成的彩色图及深度图,注意要将深度图与彩色图对齐(一般3D相机自带对齐算子),以及3D相机的彩色图内参(相机自带内参获取功能)。有了此彩色图、对齐后的深度图以及相机内参就能使用open3d生成彩色点云了.

吾名招财的博客 315

SpringBoot项目配置SSL后,WebSocket连接失败?一篇讲清WSS协议配置与Nginx反向代理避坑指南

本文详细解析了SpringBoot项目配置SSL后WebSocket连接失败的解决方案,重点介绍了WSS协议的配置要点。通过SpringBoot内嵌容器直接配置和Nginx反向代理两种方式,帮助开发者实现安全的WebSocket通信,特别适用于需要实时刷新的应用场景。

weixin_30509393的博客 714

建立时间与保持时间

建立时间与保持时间的计算 文章目录1、建立时间与保持时间概述及模型2、寄存器之间数据传输时建立时间与保持时间3、寄存器之间数据传输时建立时间余量与保持时间余量计算4、 FPGA允许的最大时钟频率或最小时钟周期5、计算FPGA时钟所允许的最大频率或最小时钟周期6、违反建立和保持时间会发生什么? 1、建立时间与保持时间概述及模型 建立时间(Tsu): 在时钟采样之前,输入必须稳定一段时间,该时间量称为建立时间。 理想最优建立时间: 保持时间(Th): 在时钟沿之后输入到触发器稳定所需的最短时间。 理想最优

Crazzy_M的博客 3万+

服务器端websocket连接失败

Springboot+WebSocket在本地正常,放到服务器连接失败。 websocket连接路径: ws://域名/api/ws/ 我这里是nginx配置的问题,之前nginx只配置了 # 访问api接口 location /api { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8081/; proxy

monongLY的博客 2549

【毕设全程指导】基于YOLOv8的包装商品检测与可视化系统(SKU110K实战)

本文介绍了一个基于YOLOv8的包装商品检测与可视化系统毕业设计方案。项目采用SKU110K数据集,通过CSV转TXT格式转换适配YOLO模型训练,包含详细的环境搭建、模型配置和训练流程。系统实现了包装商品的自动化检测,并开发了Tkinter可视化界面进行交互式检测展示。该方案结合产业应用需求与技术深度,既具备实用价值,又能充分展示学生的技术能力,适合作为计算机视觉相关专业的毕业设计选题。整个项目从数据准备到界面开发完整覆盖,帮助学生系统掌握目标检测项目的完整实现流程。

LXY_LOVE36的博客 147

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringBoot项目配置SSL后,WebSocket连接失败?手把手教你解决WSS协议问题

本文详细解析了SpringBoot项目配置SSL后WebSocket连接失败的常见问题及解决方案。从WS与WSS协议的核心差异入手,提供SSL配置要点、环境测试方案及完整排查步骤,帮助开发者快速解决WSS协议连接问题,确保实时通信功能稳定运行。

weixin_30435261的博客 508

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot项目配置SSL后,WebSocket连接失败?手把手教你搞定WSS协议

本文详细解析了SpringBoot项目配置SSL后WebSocket连接失败的常见问题及解决方案。从HTTP/HTTPS与WS/WSS协议差异入手,提供完整的WSS配置指南,包括SSL证书设置、前端连接调整、Nginx反向代理配置等实战内容,帮助开发者快速解决生产环境中的WebSocket安全连接问题。

weixin_33713707的博客 246

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

基于 Springboot 的通过 Websocket 进行信息转发的项目

本系统为基于 Websocket 的信息转发工具,在客户端没有公网IP的情况下,打通客户端与服务端的连接通道,实现双向的信息传输。

雨橙Orainge的博客 1821

smiley-http-proxy-servlet 实现springboot 接口反向代理,站点代理,项目鉴权,安全的引入第三方项目服务

背景:项目初期和硬件集成,实现了些功能服务,由于是局域网环境,安全问题当时都可以最小化无视。随着对接的服务越来越多,部分功能上云,此时就需要有一种手段可以控制到其他项目/接口的访问权限。无疑 反向代理是最轻快的解决办法。

wangluoanquan111的博客 2102

通过nginx部署vue工程时,Springboot使用webSocket(spring-boot-starter-websocket)造成经常连接失败的问题

报错信息:failed:Errorinconnectionestablishment:net::ERR_CONNECTION_TIMED_OUT 项目中需要实现实时推送,我们选择使用webSocket实现这一功能,代码写好本地测试都没有什么问题,但是当项目上到服务器上就经常发生webSocket连接不上的问题。服务端通过各种配置怎么都解决不了这个问题,之后去码云上想看其他人项目看有没有...

haohao_ding的博客 3371

SpringBoot 配置 Websocket 运行到Tomcat上出现的问题

SpringBoot 配置 Websocket 运行到Tomcat上出现的问题 文章目录SpringBoot 配置 Websocket 运行到Tomcat上出现的问题SpringBoot项目打包的时候, 会出现测试不通过的问题把war包放入Tomcat运行后报javax.websocket.server.ServerContainer not available 错误访问页面后404问题总结 参考该链接写了个小聊天室, 本地运行没问题, 放到服务器上就出错了. 记录一下问题. SpringBoot项目打包的

fanlanv的博客 841

Springboot实现VNC的反向代理

用户需要通过前端HTML页面的noVNC(noVNC是什么?)客户端连接底层VNC Server服务端,为了防止VNC Server的IP暴露,因此需要做一层代理。正常情况下使用Nginx、Apache等都可以搞定,但是由于项目架构的一些问题,暂时不能再加一台反向代理服务器,所以决定写一个单独的模块实现反向代理的功能。​ 在网上和Github上找了一下,使用了HTTP-Proxy-Servlet,引入该依赖

2401_83384536的博客 827

Nginx下反向代理部署Spring Boot后WebSocket链接失败问题

问题记录:本地socket测试无误后部署发现WebSocket connection to "xxx/x"failed

WuHao的博客 824

Springboot使用@ServerEndpoint做Websocket遇到前后端分离跨域问题,即网页链接和wss链接不一样引起的跨域问题,亲测解决方案。

Springboot使用@ServerEndpoint做Websocket遇到前后端分离跨域问题,即网页链接和wss链接不一样引起的跨域问题,亲测解决方案。

qq_38680405的博客 3281

宝塔面板+SpringBoot项目部署实战:从零配置到Nginx反向代理

本文详细介绍了如何使用宝塔面板从零开始部署SpringBoot项目,包括环境准备、Nginx反向代理配置等关键步骤。通过实战演示,帮助开发者高效完成Java项目部署,提升服务器管理效率,特别适合企业级应用和个人项目的快速上线。

weixin_29310605的博客 332

Postman测试WebSocket总报200错误?手把手教你排查SpringCloud+Nginx下的连接协议问题

本文详细解析了在SpringCloud+Nginx环境下使用Postman测试WebSocket时出现200错误的根本原因,并提供了从协议原理到实战排查的完整解决方案。通过对比HTTP与WebSocket协议差异,分析Nginx配置问题,给出正确的配置示例和SpringBoot WebSocket配置方法,帮助开发者彻底解决'Unexpected server response: 200'错误。

weixin_30338481的博客 490
上一篇: 通过uniapp将vite vue3项目打包为android系统的.apk包,并实现可自动升级功能
下一篇: vue3+ts项目实现陕西省3d地图,解决3d地图click、mouseover等事件失效问题
if时光重来
博客等级 码龄8年 248粉丝 217原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值