nginx代理websocket无法链接到服务,服务端报错:Handshake failed due to invalid Upgrade header: null

这篇具有很好参考价值的文章主要介绍了nginx代理websocket无法链接到服务,服务端报错:Handshake failed due to invalid Upgrade header: null。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、场景

1、使用nginx代理websocket

2、websocket无法成功连接到服务端

3、服务端报错

4、nginx日志正常,没有发现与该websocket地址有关的报错


二、问题表现

1、前端表现如下

websocket nginx 代理无法连接,Nginx,Java开发问题,nginx,websocket


三、排查

1、协议是否使用有误,从上面的截图可以看出,websocket使用的是wss,那么nginx代理时,使用的协议是否是https

检查结果:nginx代理时使用的协议是https,这里就不把ssl相关配置贴出来了


2、检查改地址是否能正常访问

websocket nginx 代理无法连接,Nginx,Java开发问题,nginx,websocket

因为只是为了确认地址是否访问正常,这里将wss替换为https

检查结果:可以正常访问


3、查看nginx日志是否存在异常信息

打开nginx日志文件,搜索有问题的代理地址,查看响应码

websocket nginx 代理无法连接,Nginx,Java开发问题,nginx,websocket

检查结果:没有发现与该websocket地址有关的异常日志


4、查看服务端日志是否存在异常信息

确实存在异常信息

Line 2234: 2023-10-20 09:45:24.524 - [ERROR] - [http-nio-8083-exec-5] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2237: 2023-10-20 09:45:55.066 - [ERROR] - [http-nio-8083-exec-9] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2239: 2023-10-20 09:46:15.357 - [ERROR] - [http-nio-8083-exec-6] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2277: 2023-10-20 09:47:02.509 - [ERROR] - [http-nio-8083-exec-10] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2284: 2023-10-20 09:48:12.092 - [ERROR] - [http-nio-8083-exec-8] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2291: 2023-10-20 09:49:22.683 - [ERROR] - [http-nio-8083-exec-3] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null

检查结果:websocket的链接请求确实到达了服务端,但因为某些原因无法建立连接

报错信息“Handshake failed due to invalid Upgrade header: null”翻译后是“由于无效的升级头,握手失败

可以看出,异常还是出在nginx


5、检查nginx配置

发现nginx代理配置少了一行

location /FS_WEB_ASS {
    proxy_pass http://192.168.1.133:8083/FS_WEB_ASS;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Host $http_host;
    
    # 少了下面这行配置,加上后问题得到解决
	proxy_set_header Origin "";
	
    proxy_read_timeout 86400s;
    proxy_send_timeout 60s;
    proxy_connect_timeout 60s;
}

四、原因

nginx代理配置缺少以下配置文章来源地址https://www.toymoban.com/news/detail-784289.html

proxy_set_header Origin "";

到了这里,关于nginx代理websocket无法链接到服务,服务端报错:Handshake failed due to invalid Upgrade header: null的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NGINX SSL_do_handshake() failed 报错处理

    nginx 添加配置如下: 解决的错误如下: ** SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream **

    2024年02月15日
    浏览(35)
  • websocket 线上环境报错:Handshake failed due to invalid Upgrade header: null

    一、问题描述: 公司有个项目用到了websocket,在本地环境测试没有问题,因为公司后台websocket是微服务搭建,我们需要nginx进行一层代理,结果出现如下错误 Handshake failed due to invalid Upgrade header: null 二、问题解决 1、首先找到自己nginx的配置文件—配置下面代码 —— nginx重启

    2024年02月11日
    浏览(37)
  • Nginx代理nginx.conf配置——反向代理(对WebSocket支持)

    基于Nginx代理nginx.conf配置——反向代理,如果要添加websocket支持,需要进行如下配置 在http中添加一下配置,添加对websocket支持 配置后重新运行nginx后,websocket即可成功代理。 注意防火墙端口是否开放、nginx如果使用docker,其对应的端口是否映射出来。

    2024年02月13日
    浏览(28)
  • nginx代理WebSocket配置

    proxy_http_version 设置代理到upstream的http协议版本,必须设置;默认可能会采用http/1.0,会导致协议升级切换失败。 Proxy header Upgrade Connection 使nginx将协议切换到WebSocket,必须明确定义、或判断客户端是否需要升级协议并向upstream传递该值。 proxy_read_timeout 定义从代理服务器读取响

    2024年02月16日
    浏览(29)
  • Nginx 配置 WebSocket 代理

    Nginx 官方文档网址 nginx documentation 官方文档代理样例 [!起因] 我使用指令 whereis nginx 跳出来了很多路径,但是我不太明白每个路径是什么意思,就仔细去看了看,然后发现了一个路径 /usr/share/man/man8/ 这个目录,下面一般都是手册路径,在这里面可以看很多软件的基本指令操作

    2024年04月22日
    浏览(41)
  • Nginx代理WebSocket方法

    微信公众号:运维开发故事,作者:姜总 大家好,我是小姜。 前一篇文章讲了一下什么是WebSocket协议,这里在回顾一下,并且聊一聊如何用nginx来代理WebSocket。 WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通

    2024年02月07日
    浏览(27)
  • 配置Nginx作为WebSocket代理

    简介 本教学文章将指导您如何配置Nginx作为WebSocket代理,以实现WebSocket连接的代理和实时双向通信。WebSocket是一种支持实时双向通信的协议,常用于实时聊天、通知推送等场景。通过配置Nginx作为WebSocket代理,可以将WebSocket连接转发到后端服务器,并实现高性能和可靠的实时

    2024年02月13日
    浏览(33)
  • nginx代理websocket相关配置

    map $http_upgrade $connection_upgrade {         default upgrade;         \\\'\\\' close; } # 转发ws location ^~ /ws {        # 后台准备的websocket地址端口        proxy_pass http://localhost:9092;        # 其他参数都一样        proxy_read_timeout 300s;        proxy_send_timeout 300s;        proxy_set_header  Host $

    2024年02月13日
    浏览(27)
  • Nginx配置WebSocket反向代理

    ​ WebSocket协议相比较于HTTP协议成功握手后可以多次进行通讯,直到连接被关闭。但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。这使得WebSocket程序可以更容易的使用现已存在的基础设施。 $ vim /usr/local/nginx/conf/nginx.conf (nginx配置

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包