Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx代理Websocket

nginx代理Websocket

原创
作者头像
古人诗
修改于 2020-03-18 09:58:21
修改于 2020-03-18 09:58:21
1.5K00
代码可运行
举报
文章被收录于专栏:最肯忘却最肯忘却
运行总次数:0
代码可运行

有需求使用nginx反向代理websockt,因为webSocket协议是基于http协议的,因此可以使用nginx反向代理webSocket.

ws的http请求信息
ws的http请求信息

下面是具体的协议内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Request URL: ws://x.x.x.x:8800/
Request Method: GET
Status Code: 101 Switching Protocols

request headers:
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: no-cache
Connection: Upgrade
Host: x.x.x.x:8800
Origin: http://www.websocket-test.com
Pragma: no-cache
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: M7CVPssrE5QD3UKq7pgeyA==
Sec-WebSocket-Version: 13
Upgrade: websocket
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36

对比可以发现关键的header是Connection更换为Upgrade

这里使用的nginx是centos7默认yum安装的,运行成功后可以直接修改默认的conf文件,路径是:/etc/nginx/nginx.conf

在配置文件最末添加具体代理websocket的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream x.x.x.x_8800 {        
        server  x.x.x.x:8800;   //这里配置的是被代理的websocket的ip及端口
}

server {
        listen  8880;
        server_name  193.112.175.134;  //这里配置是代理服务器的ip和端口
        location / {
        proxy_pass      http://x.x.x.x:8800;  //这里配置的是被代理的websocket的ip及端口
        proxy_http_version 1.1; //代理时使用的 http版本
        //下列配置是重点内容
        proxy_set_header Upgrade $http_upgrade;//把代理时http请求头的Upgrade 设置为原来http请求的请求头,wss协议的请求头为websocket
        proxy_set_header Connection "Upgrade";//http请求头的Connection设置为Upgrade
        proxy_set_header X-Real-IP $remote_addr;//代理设置原http请求的ip,填写$remote_addr 即可
        proxy_set_header        Host            $host;//这里设置的是host,ws没做限制的话默认$host即可
        proxy_set_header        X-Forwarded-For $remote_addr;//这里没看懂,应该是用来识别请求ip的
        }
}

重启nginx后,测试ws成功

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WebSocket使用Nginx反向代理解决Wss服务问题
WebSocket 可以减小客户端与服务器端建立连接的次数,减小系统资源开销,只需要一次 HTTP 握手,整个通讯过程是建立在一次连接/状态中,也就避免了 HTTP 的非状态性,服务端会一直与客户端保持连接,直到你关闭请求,同时由原本的客户端主动询问,转换为服务器有信息的时候推送
沈唁
2019/12/12
18.8K0
nginx反向代理配置详解
查看本篇文章链接:https://bt.ciilii.com/show/news-6.html
西里网
2025/03/06
3560
Nginx代理WebSocket方法
前一篇文章讲了一下什么是WebSocket协议,这里在回顾一下,并且聊一聊如何用nginx来代理WebSocket。
没有故事的陈师傅
2022/04/05
6K0
升级HTTPS后WebSocket不能连接
如果网站WEB使用HTTPS协议,那相应的WebSocket必须要使用wss协议
adu
2022/10/30
2.6K0
WebSocket加入心跳包防止自动断开连接
近日,在公司中开发一个使用websocket为前端推送消息的功能时,发现一个问题:就是每隔一段时间如果不传送数据的话,与前段的连接就会自动断开;
用户1212940
2022/04/13
5K0
一文带你搞懂Nginx如何配置Http、Https、WS、WSS!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2021/03/09
13.7K1
GoAccess: 实时分析Nginx日志的轻量级工具
十多年前我曾使用GoAccess搭建了一个NGINX日志分析工具,它以其轻量级、低资源消耗和实时更新的特性,非常适合个人和小站点使用。最近我的服务器做了次搬家,需要重新搭建日志分析系统,于是到网上查找GoAccess的用法时,发现官方站点的文档还是一如既往的晦涩,而其他站点介绍的用法则与我要搭建的架构不契合。所以干脆做了次总结,在这篇文章中,我将分享我如何搭建GoAccess,并使其通过Websocket协议提供实时日志分析。我的架构部署图如下所示:
陶辉
2024/09/06
7240
GoAccess: 实时分析Nginx日志的轻量级工具
[nginx]配置nginx支持websocket解决返回400错误问题
当nginx里没有配置支持webocket时 , 但是已经配置了域名 比如:ws://gofly.sopans.com/ws_visitor
唯一Chat
2021/04/23
3K0
【详解】Nginx配置WebSocket
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
大盘鸡拌面
2025/03/29
3110
【Nginx】Nginx部署实战——静态文件+反向代理+均衡负载+Https+Websocket
Nginx是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。前一段时间听说Igor Sysoev被俄罗斯警方带走了,不知道放出来了没有。言归正常,来看一下nginx的相关配置如何满足我们的日常需求吧。
DDGarfield
2022/06/23
2.5K0
Nginx支持WebSocket反向代理-学习小结
WebSocket是目前比较成熟的技术了,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。
洗尽了浮华
2018/08/22
3K0
Nginx支持WebSocket反向代理-学习小结
nginx被动检测
随着应用越来越多,tomcat容器也越来越重,随之而来的是tomcat宕机越来越频繁。最终选择jar包部署测试反向代理的效果。虽然jar包部署之后项目肯定会稳定很多。但是nginx宕机检测还是要做的。在本地调试发现并没有出现什么问题。就将nginx部署到了灰度环境。在项目跑起来之后我们直接关闭了其中一个项目。按照nginx反向代理的被动检测机制应该还是可以返回正常的数据。但是我们发现灰度的nginx宕机检测花费了21秒。这个时间有点太大了,用户估计要爆炸。想了好多也没找到问题。下面记录一下自己的狗血经历。
写一点笔记
2020/08/25
6460
nginx被动检测
「IM系列」WebSocket教程:WS和WSS域名访问配置
WebSocket协议与HTTP协议不同,但WebSocket握手与HTTP兼容,使用HTTP升级工具将连接从HTTP升级到WebSocket。这允许WebSocket应用程序更容易地适应现有的基础设施。例如,WebSocket应用程序可以使用标准HTTP端口80和443,从而允许使用现有的防火墙规则。
Tinywan
2023/12/19
8.7K0
「IM系列」WebSocket教程:WS和WSS域名访问配置
HTTPS站点使用WebSocket的错误及解决方案
第一个问题:在https站点下,使用ws://im.joshua317.com 报错,报错信息如下:
joshua317
2021/09/08
11.6K0
nginx服务器配置/websocket nginx 配置笔记
location的具体用法可以参看reference的第二篇文章介绍得非常详细。我这里使用/u/匹配我的路径以/u/开头下都使用这个下面{}中的配置。
全栈程序员站长
2022/07/07
2.6K0
Nginx Websocket 配置
WebSocket 是一种基于 TCP 连接的全双工通信的协议,其工作在应用层,建立连接的时候通过复用 Http 握手通道,完成 Http 协议的切换升级,即切换到 WebSocket 协议,协议切换成功后,将不再需要客户端发起请求,服务端就可以直接主动向客户端发送数据,实现双向通信。
Se7en258
2021/05/18
5.5K0
Nginx Websocket 配置
nginx rewrite与proxy_pass共用问题分析二
我们对比下同时使用 rewrite 与 proxy_pass 与单独使用其中一个的情况下,服务端获取到的 url 的表现。获取 url 的代码如下:
山行AI
2019/11/12
5.8K0
nginx rewrite与proxy_pass共用问题分析二
【Nginx】面试官问我Nginx如何配置WebSocket?我给他现场演示了一番!!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/10/29
1.1K0
nginx rewrite与proxy_pass配置问题分享
原因是 rewrite 规则没生效,因为把rewrite那一行去掉,重启nginx之后,各种请求呈现的结果无殊。同时我们需要注意的是proxy_pass的规则,当rewrite不生效时:
山行AI
2019/11/12
3.7K0
nginx rewrite与proxy_pass配置问题分享
nginx 设置 websocket 反向代理
废话不多说,nginx 配置如下: #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
前Thoughtworks-杨焱
2021/12/08
5550
相关推荐
WebSocket使用Nginx反向代理解决Wss服务问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验