国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

nginx反向代理webSocket配置詳解

2024-08-30 12:24:45
字體:
來源:轉載
供稿:網友

最近在做項目的時候用到了webSocket協議,而且是在微信小程序中用到了webSocket,微信小程序中使用wss協議的時候不能設置端口,只能使用默認的443端口。我擦,我的https已經監聽了443端口,webSocket再去監聽443,肯定不行啊。要想辦法解決,老大把這個問題交給我了,我愉快(手動懵逼)的接收了這個任務。想到了兩種辦法解決。一種解決辦法是把webSocket部署到另一臺服務器上,這樣成本也太高了。另一種辦法,就是使用nginx反向代理。

因為webSocket協議是基于http協議升級的(見下圖),所以可以使用nginx反向代理webSocket.

webSocket

從這張圖片上可以看出,webSocket連接的建立是在http協議的基礎上。

GET /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==Sec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 13Origin: http://example.com

熟悉HTTP的童鞋可能發現了,這段類似HTTP協議的握手請求中,只是多了幾個東西。

Upgrade: websocketConnection: Upgrade這個就是Websocket的核心了,告訴Apache、Nginx等服務器:我發起的是Websocket協議。Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==Sec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 13

首先,Sec-WebSocket-Key 是一個Base64 encode的值,這個是瀏覽器隨機生成的,告訴服務器:泥煤,不要忽悠窩,我要驗證尼是不是真的是Websocket助理。

最后,Sec-WebSocket-Version 是告訴服務器所使用的Websocket Draft(協議版本),在最初的時候,Websocket協議還在 Draft 階段,各種奇奇怪怪的協議都有,而且還有很多期奇奇怪怪不同的東西,什么Firefox和Chrome用的不是一個版本之類的,當初Websocket協議太多可是一個大難題。。不過現在還好,已經定下來啦 大家都使用的一個東西

然后服務器會返回下列東西,表示已經接受到請求, 成功建立Websocket啦!

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=Sec-WebSocket-Protocol: chat

這里開始就是HTTP最后負責的區域了,告訴客戶,我已經成功切換協議啦~

Upgrade: websocketConnection: Upgrade

依然是固定的,告訴客戶端即將升級的是Websocket協議。至此,HTTP已經完成它所有工作了,接下來就是完全按照Websocket協議進行了。

明白協議的原理了就可以下一步了

首先nginx先配置好https的證書

服務器的證書是老大配置好的,我就直接用了。需要的自己查一下吧0.0

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡族自治县| 尚志市| 合山市| 贵阳市| 扶风县| 交城县| 贡觉县| 神农架林区| 通州市| 酒泉市| 额尔古纳市| 岢岚县| 镇平县| 威信县| 监利县| 常德市| 凌海市| 广德县| 凤山县| 白水县| 陇南市| 雅安市| 忻城县| 壶关县| 定西市| 普宁市| 怀来县| 墨脱县| 崇礼县| 宁都县| 吐鲁番市| 安泽县| 东海县| 将乐县| 嵩明县| 东宁县| 秦皇岛市| 罗田县| 太仆寺旗| 丰镇市| 富川|