Nginx反向代理WebSocket服务连接报错:WebSocket connection to “wssxxxxxx“ failed
最近使用 node.js 搭建 WebSocket
服务,在本地测试 connection 都是正常,于是部署到 Linux 服务上,需要用 Nginx
来反向代理 WebSocket
服务。浏览器控制台报错:WebSocket connection to 'wss://tiven.cn/ws/xxx' failed:
,经过一般折腾,终于成功了这个报错。
介绍
WebSocket 协议与 HTTP 协议不同,但 WebSocket 握手与 HTTP 兼容,使用 HTTP 升级工具将连接从 HTTP 升级到 WebSocket。这允许 WebSocket 应用程序更容易地适应现有的基础架构。例如,WebSocket 应用程序可以使用标准 HTTP 端口80和443,从而允许使用现有的防火墙规则。
WebSocket 应用程序可以在客户端和服务器之间保持长时间运行的连接,从而有助于开发实时应用程序。 Nginx 反向代理用于将连接从 HTTP 升级到 WebSocket 的 HTTP 升级机制使用 Upgrade
和 Connection
头 。反向代理服务器在支持 WebSocket 时面临一些挑战。一个是 WebSocket 是一个逐跳协议,因此当代理服务器拦截客户端的升级请求时,需要向后端服务器发送自己的升级请求,包括相应的头文件。此外,由于 WebSocket 连接长期存在,与 HTTP 使用的典型短期连接相反,反向代理需要允许这些连接保持打开状态,而不是关闭它们,因为它们似乎处于空闲状态。
允许在客户机和后端服务器之间建立隧道,Nginx 支持 WebSocket。对于 Nginx 将升级请求从客户端发送到后台服务器,必须明确设置 Upgrade
和 Connection
标题。
总的来说,就是使用 Nginx 反向代理 WebSocket 服务时需要设置 Upgrade
和 Connection
的 header
。
nginx 配置
出现报错时的配置
location /ws {
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;
proxy_pass http://127.0.0.1:9000/ws;
}反向代理成功的配置
location /ws {
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;
proxy_pass http://127.0.0.1:9000/ws;# 关键配置 start proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 关键配置 end
}
完美解决报错问题(WebSocket connection to "xxx/xxx" failed
)。
Nginx 相关推荐
- Nginx学习与实战 · 配置HTTP2
- Nginx学习与实战 · 解决SPA单页面应用CDN缓存问题
- Nginx学习与实战 · 解决net::ERR_CONTENT_LENGTH_MISMATCH 206问题
- Nginx warn:conflicting server name ‘127.0.0.1’ on 0.0.0.0:8010, ignored
- Nginx反向代理WebSocket服务连接报错:WebSocket connection to ‘wss://xxx/xxx’ failed
欢迎访问:天问博客
最后
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。
Nginx反向代理WebSocket服务连接报错:WebSocket connection to “wssxxxxxx“ failed相关推荐
- Nginx反向代理Redis服务
Nginx反向代理Redis服务 Nginx代理Redis 第一步:redis 配置及启动 vim redis.conf port 6379 # bind 127.0.0.1 daemonize ye ...
- Tomcat系列之服务器的基本配置及Nginx反向代理tomcat服务
大纲 一.Tomcat 基本配置 1.为Tomcat提供SysV脚本 2.catalina 脚本讲解 3.telnet 登录管理Tomcat 4.配置Tomcat虚拟主机 5.Tomcat图形管理接口 ...
- nginx 反向代理 apache 服务
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...
- Nginx反向代理+Go服务实践
前言 在后端开发期间,会为前端或者平台上提供API服务接口,这时.我们看完今天的文章可以详细了解到Nginx反向代理到后端服务上的过程. Nginx: 是一个高性能的HTTP和反向代理web服务器,同 ...
- 用nginx反向代理功能将WS转为加密websocket (wss)
原来写的服务器端程序支持websocket非加密协议,即仅支持 ws://ip/file 形式的访问,现在网站的主协议变成了https了,再通过ws://协议来访问原服务器,浏览器阻止了.查找原因就是 ...
- nginx反向代理实现指定接口访问指定机器
location表达式类型 location = 表示精确匹配 location ^~ 表示uri以指定字符或字符串开头 location ~ 表示区分大小写的正则匹配 location ~* 表示不 ...
- 【完整教程】nginx反向代理wss,实现不修改服务器端websocket代码加密通讯请求
最近在用go语言的leaf框架开发H5游戏的服务器端,用websocket的方式进行服务器与客户端之间的通讯.然后之前都是本地websocket开发,要部署到facebook平台的时候,平台要求与第三 ...
- 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)
SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者.消费者) 一.软件架构和微服务需求 1.1.微服务需求 1.2.框架选择 1.3.集群分布(下面为此图实 ...
- 微服务架构(5):nginx反向代理cors解决跨域
微服务架构(5):nginx反向代理&&cors解决跨域 学习目标 1.使用域名访问本地项目 1.1.统一环境 1.2.域名解析 1.3.解决域名解析问题 1.4.nginx解决端口问 ...
最新文章
- java线程同步以及对象锁和类锁解析(多线程synchronized关键字)
- C语言函数集(十五)
- SAP 作业类型主数据
- java重入锁_java并发编程:可重入锁是什么?
- ffplay.c学习-1-框架及数据结构
- 肖鹏:微博数据库那些事儿(图灵访谈)
- 彻底学会使用epoll(一)——ET模式实现分析
- 123. 买卖股票的zui佳时机 III(JavaScript)
- java验证码技术_java验证码前台技术
- 开发日记:接口开发设计
- python 训练好的模型怎么保存_MNIST数据集训练完如何保存成模型文件?
- android:图片裁剪
- tf入门-池化函数 tf.nn.max_pool 的介绍
- spring源码-第三个后置处理器
- 手把手教你二维数组打印
- 美学原理-杨宁课堂笔记
- 一文看懂神经网络工作原理
- IOS实现3DTouch功能
- Network (哈工大网课笔记)
- 六顶思考帽(edward de bono)
热门文章
- VUE项目部署Tomcat页面刷新404问题解决方法
- 如何在vmware15上安装linux镜像
- C语言判断字符串是否为回文字符串
- Redis 链接时好时坏[ error ] [2]Redis::pconnect(): connect() failed: Connection timed out
- 2013福建高职单招计算机类专业,2013年福建高职单招-计算机类专业-知识试题.docx...
- Tomcat调优教程(转载) 来自周立大佬文章
- ARMv8-A编程指导之电源管理(1)
- 项目1在线交流平台-4. 使用radis高性能储存方案-3.redis使用场景-点赞功能
- 自然语言处理从入门到应用——词向量的评价方法
- 数智融合,油化创新-英诺森出席中国石油石化企业信息技术交流大会