一篇带给你Nginx代理WebSocket方法

  • 电脑网络维修
  • 2024-11-15

大家好,我是小姜。

前一篇文章讲了一下什么是WebSocket协定,这里在回忆一下,并且聊一聊如何用nginx来代理WebSocket。

WebSocket是HTML5下一种新的协定。它成功了阅读器与主机全双工通讯,能更好的节俭主机资源和带宽并到达实时通讯的目标。它与HTTP一样经过已建设的TCP衔接来传输数据,但是它和HTTP最大不同是:

WebSocket协定相比拟于HTTP协定成功握手后可以屡次启动通讯,直到衔接被封锁。但是WebSocket中的握手和HTTP中的握手兼容,它经常使用HTTP中的Upgrade协定头将衔接从HTTP更新到WebSocket。这使得WebSocket程序可以更容易的经常使用现已存在的基础设备。大局部如今的阅读器都支持WebSocket。

在实践的消费环境中,要求多个WebSocket主机必定具备高性能和高可用,那么WebSocket协定就要求一个负载平衡层,Nginx从「1.3」版本开局支持WebSocket,其可以作为一个反向代理和为WebSocket程序做负载平衡。

WebSocket协定与HTTP协定不同,但WebSocket握手与HTTP兼容,经常使用HTTP更新工具将衔接从HTTP更新到WebSocket。这准许WebSocket运行程序更容易地顺应现有的基础架构。例如,WebSocket运行程序可以经常使用规范HTTP端口80和443,从而准许经常使用现有的防火墙规则。

「WebSocket运行程序可以在客户端和主机之间坚持长时期运转的衔接」,从而有助于开发实时运行程序。用于将衔接从HTTP更新到WebSocket的HTTP更新机制经常使用Upgrade和Connection头。反向代理主机在支持WebSocket时面临一些应战。一个是WebSocket是一个逐跳协定,因此当代理主机阻拦客户端的更新恳求时,要求向后端主机发送自己的更新恳求,包含相应的头文件。此外,由于WebSocket衔接常年存在,与HTTP经常使用的典型短期衔接相反,反向代理要求准许这些衔接坚持关上形态,而不是封锁它们,由于它们仿佛处于闲暇形态。

准许在客户机和后端主机之间建设隧道,Nginx支持WebSocket。关于NGINX将更新恳求从客户端发送到后盾主机,必定明白设置Upgrade和Connection题目。

Nginx开启WebSocket代理的性能方法如下:

(1)编辑nginx.conf,在http区域内必定要参与上方性能:

「解释一下map指令的作用:」该作用关键是依据客户端恳求中的值,来结构扭转connection_upgrade的值,即依据变量的值创立新的变量connection_upgrade,创立的规则就是{}外面的物品。其中的规则没有做婚配,因此经常使用自动的,即 http_upgrade为空字符串的话,那么值就是 close。

(2)编辑vhosts下虚构主机的性能文件,在location婚配性能中参与如下内容:

.1; $http_upgrade; ;

(3)一次性完整的示例如下:

 {; sre1.ayunw.cn:8080; sre2.ayunw.cn:8080; sre3.ayunw.cn:8080;} {;sre.ayunw.cn;/usr/local/nginx/logs/sre.ayunw.cn.access. main;/usr/local/nginx/logs/sre.ayunw.cn..error. error;/data/certs/nginx/sre.ayunw.cn.crt;/data/certs/nginx/sre.ayunw.cn.key;5m; TLSv1..2;HIGH::;on; / {://sre_backend;on;.conf;1.1;$http_upgrade;;} /50x.html; = /50x.{html;}}

以上就是经过nginx代理WebSocket的单向TLS认证形式。

「好受提示:」 自动状况下,假设代理主机在 60 秒内没有传输任何数据,衔接将被封锁。可以经常使用proxy_read_timeout指令参与此超时。

总的来说:

「WebSocket与Http相反点」:

「WebSocket与Http不同点」:

「WebSocket与Http咨询」 WebSocket在建设握手时,数据是经过HTTP传输的。但是建设之后,在真正传输时刻是不要求HTTP协定的。

在WebSocket中,只要要主机和阅读器经过HTTP协定启动一个握手的举措,而后独自建设一条TCP的通讯通道启动数据的传送。WebSocket衔接的环节是:

(1)客户端动员http恳求,经过3次握手后,建设起TCP衔接;http恳求里寄存WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version等;2)主机收到客户端的握手恳求后,雷同驳回HTTP协定回馈数据;3)客户端收到衔接成功的信息后,开局借助于TCP传输信道启动全双工通讯。

Nginx代理webSocket经常终止的处置方法(即如何坚持长衔接)

这个疑问在于nginx的性能上,要求性能几个超时的设置。如下:

 { { / {html;..htm; ://sre_backend;.1; 5s; 60s; 30s; $http_upgrade; ;}}}

「解释上方超时性能的」

「proxy_read_timeout参数」 自动值60秒,该指令设置与代理主机的读超时时期。它选择了nginx会期待多长时期来取得恳求的照应。这个时期不是取得整个response的时期,而是两次reading操作的时期。即是主机对你期待最大的时期,也就是说当你经常使用nginx转发webSocket的时刻,假设60秒内没有通讯,依然是会断开的,所以,你可以依照你的需求来设定。比如说,我设置了5分钟,那么假设我5分钟内有通讯,或许5分钟内有做心跳的话,是可以坚持衔接不终止的。所以这个时期是看你的业务需求来调整时期长短的。

「proxy_send_timeout参数」 自动值60s,设置了发送恳求给upstream主机的超时时期。超时设置不是为了整个发送时期,而是在两次write操作时期。假设超时后,upstream没有收到新的数据,nginx会封锁衔接。

「WebSocket与Socket的相关:」

Socket其实并不是一个协定,而是为了繁难经常使用TCP或UDP而形象进去的一层,是位于运行层和传输控制层之间的一组接口。当两台主机通讯时,必定经过Socket衔接,Socket则应用TCP/IP协定建设TCP衔接。TCP衔接则更依托于底层的IP协定,IP协定的衔接则依赖于链路层等更低档次。

WebSocket就像HTTP一样,则是一个典型的运行层协定。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6482.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号