使用Nginx代理和转发Websocket连接
1.Websocket 简介
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
2.Nginx 简介
Nginx是一个反向代理服务器,所有的来自浏览器的请求必须经过Nginx。
通常的正向代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,此时客户机是主动方。
而在反向代理中,web服务器是主动方,客户机必须经过代理才能访问。
3.Uwsgi 简介
所谓后端APP,即一套用来处理客户端请求的逻辑部分的程序;
所谓WSGI,即python用来web开发的协议标准;
所谓uWSGI,即一个即可以充当web服务器,又可以作为中间件的程序;
所谓uwsgi,是uWSGI基于WSGI实现的自用的一个协议;
4.配置Nginx代理Websocket连接
一 Nginx监听80端口,并转发到443端口。即默认使用https传输。
二 在443端口,开启ssl,设置证书。
如果监听到指定websocket连接,设置websocket协议升级,具体配置如下:
proxy_connect_timeout 2s
...
proxy_pass https://clusters
...
proxy_set_header X-Real_IP $remote_addr_IP
proxy_set_header Host $host
proxy_set_header X_Forward_For $X_Forward_For
proxy_http_version 1.1
proxy_set_header Upgrade $http_upgrade
proxy_set_header Connection 'upgrade'
三 监听另一端口,配置同上,并将消息转发给uwsgi端口,交付给uwsgi处理。
5.前后端发送和处理Websocket消息
前端使用javascript接口新建websocket对象,并监听websocket.onmessage事件,进行消息接受和处理。并通过websocket.send()接口进行消息发送。
后端uswgi框架使用类似的websocket对象进行消息收发和处理。
使用Nginx代理和转发Websocket连接相关推荐
- 使用NGINX代理通过外网连接内网服务器的mysql和redis等
使用NGINX代理通过外网连接内网服务器的mysql和redis等 前言 使用工具 安装OpenResty 前言 服务器A.B,现在A和B互通,外网可以访问A,但是访问不到B,数据库等中间件安装在B服 ...
- Nginx代理-端口转发
目录 1.使用nginx+docker端口转发 2.未使用docker容器的端口转发 使用nginx+docker实现端口转发 背景: 一台服务器,使用docker搭建了多个服务容器: 服务1:0.0 ...
- Nginx 代理 TCP协议 MySQL连接
使用nginx代理mysql连接有个好处就是,如果做了容灾处理的话, 可以瞬间平滑切换到可用服务上. ip关系如下: 需求:现在想要通过182.156的nginx 代理访问182.155的mysql( ...
- 使用 Nginx 代理 Socket.io/WebSocket 及 负载均衡配置
2019独角兽企业重金招聘Python工程师标准>>> 转自:http://naux.me/using-nginx-with-socketio/ 0,介绍 Socket.io 一套是 ...
- 使用nginx代理通过外网连接内网oracle以及mysql数据库
一.前言 1.首先要部署nginx,在编译时要加上 --with-stream 使其支持stream模块,具体安装部署这里就不说了. 2.准备一台有暴露公网ip的主机将nginx部署到上面,其他部署m ...
- Nginx代理webSocket经常中断的解决方案, 如何保持长连接
为什么80%的码农都做不了架构师?>>> 背景 这天气够热的,要处理的事情也够多的.... 想看解决的,直接 ctrl+f搜索关键字'配置点'## 开始前交代(想看原因的看这个 ...
- Nginx代理webSocket时60s自动断开, 怎么保持长连接
利用nginx代理websocket的时候,发现客户端和服务器握手成功后,如果在60s时间内没有数据交互,连接就会自动断开,如下图: 为了保持长连接,可以采取来两种方式. 1.nginx.conf 文 ...
- nginx转发websocket
nginx转发websocket 1.Nginx 支持websocket的配置 server {listen 80;server_name 域名;location / {proxy_pass http ...
- nginx开启支持websocket连接
引用至:http://www.javajob.work/article/24 2020-1-9: nginx的启动:/usr/local/nginx/sbin/nginx -c /usr/local/ ...
最新文章
- [转帖]什么是光纤的波长?看看有哪些是你不知道的!
- Hibernate【XXXX.hbm.xml】总结
- 【Windows部署】首次安装的谷歌Chrome浏览器出现【无法打开此页面】问题处理(详细图文步骤)
- iOS - UIScrollView
- mongoDB中的聚合操作
- (8)Zynq AXI_ACP接口介绍
- DOTNET零碎总结---VB.NET修改数据存在多个txtbox时,SQL语句的操作
- spring配置数据源错误记录
- 上传文件应注意的异常:FileUpLoad控件.
- pxe启动虚拟机过程记录
- GStreamer应用开发文档的ogg播放器
- mysql 之 增删改查
- UID/DID/SID总结
- 在线IDE- Gitpod介绍
- 使用ant design的table控件最后一列固定(fixed)遇到的问题
- 微信电脑版公测更新,终于可以刷朋友圈啦!!(附公测地址)
- 计算机网络-网络类别[#1]
- 软工实践第八次作业——第五组
- 打造你的私人聊天机器人
- Java基础之02 动态代理模式172 173 类加载器原理分析
热门文章
- PHP json_encode 只支持utf8编码
- 【数据结构】用栈解决表达式求值问题
- 步步为营VS 2008 + .NET 3.5系列文章索引
- Installshield x:实现序列号检验,获取用户信息并写入指定_ini文件1 - 子夜 MySpace聚友博客...
- 创建yum存储库;文件目录下存RPM包,不挂载镜像,不使用外网yum源;
- Date日期类型的绑定
- hoj 13788 Dwarves
- 错误:C:\Windows\System32\ssleay32.dll: Can't load IA 32-bit .dll on a AMD 64-bit
- 一步步教你轻松学K-means聚类算法
- 多线程之线程池-各个参数的含义- 阿里,美团,京东面试题目