亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

nginx反向代理webSocket配置詳解

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

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

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

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

在nginx配置文件的 service 節點中添加如下配置

location /wss    {         proxy_pass http://127.0.0.1:8888;         proxy_http_version 1.1;         proxy_set_header Upgrade $http_upgrade;         proxy_set_header Connection "Upgrade";        proxy_set_header X-Real-IP $remote_addr;     }

解釋一下參數

/wss 這個是隨便起的,告訴Nginx要代理的url,現在我的設置為 wss ,當我訪問的我的服務器 https://abc.com/wss 時,Nginx會把我的請求映射到本機的8888端口。

proxy_pass 要代理到的url,我的代理到本機的8888端口。

proxy_http_version 代理時使用的 http版本。

重點來了:

代理webSocket的關鍵參數

proxy_set_header Upgrade 把代理時http請求頭的 Upgrade 設置為原來http請求的請求頭,wss協議的請求頭為 websocket 
proxy_set_header Connection 因為代理的wss協議,所以http請求頭的 Connection 設置為 Upgrade

proxy_set_header X-Real-IP 給代理設置原http請求的ip,填寫 $remote_addr 即可

至于websocket協議的response的參數,在反向代理的時候不用管。

到這里,Nginx反向代理webSocket的配置就完成了,重啟Nginx,用websocket連接試試,在原來wss地址的地方填寫 wss://abc.com/wss 。如果websocket成功連接,說明Nginx反向代理websocket已經成功了。

總結

現在的配置只是反向代理到本機時的配置,如果要反向代理到別的主機,在代理時可能會跨域問題,需要在Nginx的反向代理中做跨域的配置。

思考

在Nginx的配置文件中能看到這一段

location ~ .php$ {   root html;   fastcgi_pass 127.0.0.1:9000;   fastcgi_index index.php;   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   include fastcgi_params;}

這是Nginx中php的配置文件,我擦,怎么這么眼熟,這個配置清單跟剛才的websocket的反向代理這么像。通過上網查資料才知道,原來Nginx在處理php類型的請求時,把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果并返回被nginx,而php-fpm是一個PHP FastCGI管理器,nginx本身不能處理PHP,它只是個web服務器,當接收到請求后,如果是php請求,則發給php解釋器處理,并把結果返回給客戶端。所以說Nginx在處理php類型的請求時,本質上也是通過反向代理功能實現的。

我們可以把思維展開,用Nginx反向代理可以實現更多的功能,比如代理Tomcat

location /Tomcat    {         proxy_pass http://127.0.0.1:8080;         proxy_http_version 1.1;        proxy_set_header X-Real-IP $remote_addr;     }

當然,也可以用Nginx反向代理實現負載均衡,這個我還沒有試過,等以后用到了,再來補充

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费在线| 91精品久久久久久久久久久久久| 国产精品人人做人人爽| 日韩av一区在线| 色视频www在线播放国产成人| 久久久女人电视剧免费播放下载| 欧洲亚洲在线视频| 成人免费在线视频网址| 国内揄拍国内精品| 欧美亚洲成人网| 午夜精品一区二区三区在线视| 欧美激情久久久久久| 亚州av一区二区| 日韩大片免费观看视频播放| 青青草成人在线| 精品国产91久久久| 精品成人乱色一区二区| 夜夜嗨av一区二区三区四区| 久久久久久91| 亚洲一区中文字幕在线观看| 久久久噜噜噜久久| 欧美极度另类性三渗透| 久久综合伊人77777尤物| 久久精视频免费在线久久完整在线看| 欧美自拍视频在线观看| 亚洲欧美日韩一区二区三区在线| 成人中心免费视频| 国产一区二区av| 国产精品久久久久久久久久尿| 亚洲最大的成人网| 午夜精品久久久久久久久久久久久| 亚洲精品v欧美精品v日韩精品| 色偷偷偷综合中文字幕;dd| 欧美成人国产va精品日本一级| 日本成熟性欧美| 欧美性猛交xxxx富婆弯腰| 精品小视频在线| 亚洲男子天堂网| 亚洲全黄一级网站| 国产精品吹潮在线观看| 亚洲自拍欧美色图| 国产成人在线播放| 国产视频久久久| 亚洲欧美在线第一页| 欧美丝袜第一区| 成人黄色激情网| 57pao国产精品一区| 国产精品麻豆va在线播放| 日韩中文字幕免费视频| 久久精品视频在线观看| 亚洲欧美国产va在线影院| 日日摸夜夜添一区| 久久91超碰青草是什么| 欧美黑人极品猛少妇色xxxxx| 欧美精品videosex极品1| 亚洲精美色品网站| 国产精品久久久久影院日本| 欧美性受xxxx白人性爽| 在线亚洲午夜片av大片| 高潮白浆女日韩av免费看| 色播久久人人爽人人爽人人片视av| 久久久久久国产精品| 精品视频久久久久久久| 久久成人亚洲精品| 8050国产精品久久久久久| 俺也去精品视频在线观看| 日韩在线观看免费高清完整版| 97超碰国产精品女人人人爽| 色妞欧美日韩在线| 91在线免费观看网站| 国产精品福利久久久| 国产精品一区二区女厕厕| 精品日本美女福利在线观看| 日本乱人伦a精品| 不卡在线观看电视剧完整版| 精品一区二区三区电影| 久久久综合免费视频| 亚洲男人天堂2023| 亚洲欧美中文另类| 欧美日韩亚洲成人| 95av在线视频| 国产精品久久久av久久久| 日韩欧美在线免费观看| 日韩精品在线免费观看视频| 日韩美女激情视频| 国产精品视频在线观看| 18一19gay欧美视频网站| 国产精品一区二区三区成人| 国产精品毛片a∨一区二区三区|国| 欧美超级免费视 在线| 91精品国产777在线观看| 狠狠色狠狠色综合日日五| 国模精品视频一区二区| 日韩中文在线视频| 亚洲在线一区二区| 日韩精品www| 亚洲欧美综合v| 欧美第一黄色网| 国产精品美女久久久免费| 亚洲午夜精品久久久久久性色| 色777狠狠综合秋免鲁丝| 51精品在线观看| 亚洲欧美制服第一页| 国产精品www色诱视频| 亚洲缚视频在线观看| 欧美性极品xxxx做受| 久久综合伊人77777尤物| 欧美成人在线影院| 一道本无吗dⅴd在线播放一区| 九九久久久久99精品| 国产精品久久久精品| 欧美日韩国产精品一区二区三区四区| 日韩美女激情视频| 国产国产精品人在线视| 国产v综合v亚洲欧美久久| 日韩亚洲欧美中文在线| 精品偷拍各种wc美女嘘嘘| 亚洲高清久久网| 亚洲精品短视频| 亚洲国产精品电影在线观看| 中文字幕在线国产精品| 色多多国产成人永久免费网站| 精品欧美国产一区二区三区| 久久视频中文字幕| 亚洲精品一区av在线播放| 国产精品亚洲网站| 精品中文字幕久久久久久| 国产ts人妖一区二区三区| 欧美精品久久久久久久| 国产激情视频一区| 色综合色综合久久综合频道88| 中国china体内裑精亚洲片| 久久精品成人欧美大片古装| 欧美午夜电影在线| 亚洲资源在线看| 亚洲永久在线观看| 欧美极品少妇与黑人| 上原亚衣av一区二区三区| 日韩成人在线播放| 91国偷自产一区二区三区的观看方式| 欧美日韩国产黄| 96国产粉嫩美女| 欧美激情一级二级| 日韩欧美中文免费| 国产欧美精品一区二区三区-老狼| 少妇高潮久久77777| 欧美性视频网站| 国产欧美日韩91| 国产精品视频26uuu| 国产精品久久久久久影视| 欧美孕妇毛茸茸xxxx| 国产成一区二区| 欧美激情乱人伦一区| 亚洲a成v人在线观看| 久久久久久久色| 国产ts人妖一区二区三区| 欧美极品美女视频网站在线观看免费| 精品国模在线视频| 91香蕉电影院| 国产精品av免费在线观看| 爱福利视频一区| 欧美高清在线视频观看不卡| 亚洲精品国精品久久99热一| 欧美日韩性生活视频|