中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

WebSocket與Nginx的小秘密

2019-07-23    來源:天下數(shù)據(jù)IDC資訊

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

代理服務(wù)器獲取流量的方式 Nginx代理的方式 Nginx如何支持WebSocket Nginx配置WebSocket方式

一、代理服務(wù)器獲取流量的方式

客戶端通常都會(huì)直接與Web服務(wù)器進(jìn)行通信。那么當(dāng)使用代理服務(wù)器作為客戶端和服務(wù)器兩者間一個(gè)“中介”時(shí),代理服務(wù)器獲取流量的方式有以下四種方式:

修改客戶端:將客戶端配置為使用代理服務(wù)器,那么客戶端會(huì)直接將HTTP請(qǐng)求有意的發(fā)送到代理服務(wù)器上。

修改網(wǎng)絡(luò):網(wǎng)絡(luò)基礎(chǔ)設(shè)備可以通過若干種技術(shù)手段,在客戶端不知情或沒有參與的情況下,攔截網(wǎng)絡(luò)流量并將其導(dǎo)入代理,這種代理稱為攔截代理。

修改DNS命名空間:放在Web服務(wù)器之前的代理服務(wù)器,替代物,會(huì)直接假扮Web服務(wù)器的名字和IP地址

修改Web服務(wù)器:將Web服務(wù)器配置為向客戶端發(fā)送一條HTTP重定向命令,將客戶端的請(qǐng)求重定向到代理服務(wù)器上。

WebSocket與Nginx的小秘密

二、Nginx代理的方式

客戶端和代理服務(wù)器建立連接并發(fā)送請(qǐng)求,代理服務(wù)器端接收客戶端的請(qǐng)求后與具體的服務(wù)器建立連接,并把請(qǐng)求分發(fā)給服務(wù)器進(jìn)行處理,最后再將服務(wù)器的響應(yīng)結(jié)果反饋給客戶端。

三、Nginx如何支持WebSocket

WebSocket 和HTTP雖然是不同協(xié)議,但是兩者“握手”方式兼容。通過HTTP升級(jí)機(jī)制,使用HTTP的Upgrade和Connection協(xié)議頭的方式可以將連接從HTTP升級(jí)為WebSocket。如下圖所示

WebSocket與Nginx的小秘密

Http升級(jí)為WebSocket

因?yàn)閃ebSocket協(xié)議是一個(gè)hop-by-hop協(xié)議(此類頭部字段只對(duì)單次轉(zhuǎn)發(fā)有效。會(huì)因?yàn)檗D(zhuǎn)發(fā)給緩存/代理服務(wù)器而失效),為了讓Nginx代理服務(wù)器可以將來自客戶端的Upgrade請(qǐng)求發(fā)送到后端服務(wù)器,要求Upgrade和Connection的頭信息必須被顯式的設(shè)置?梢酝ㄟ^下文將要講解的修改Nginx的配置文件方式解決此問題。

WebSocket與Nginx的小秘密

代理服務(wù)器分別與客戶端和服務(wù)器建立連接,由于WebSocket連接是長(zhǎng)時(shí)間保持的,所以代理服務(wù)器需要允許這些連接處于打開狀態(tài),而不是像對(duì)待HTTP使用的短連接那樣將其關(guān)閉。

四、Nginx配置Websocket方式

通過修改nginx.conf配置,如下圖所示

WebSocket與Nginx的小秘密

1.map是根據(jù)客戶端請(qǐng)求中 $http_upgrade 的值來構(gòu)造改變 $connection_upgrade 的值,即根據(jù)變量 $http_upgrade 的值和{} 里規(guī)則創(chuàng)建新的變量 $connection_upgrade并賦值。

2.HTTP的Upgrade協(xié)議頭機(jī)制用于將連接從HTTP連接升級(jí)到WebSocket連接,Upgrade機(jī)制使用了Upgrade協(xié)議頭和Connection協(xié)議頭;為了讓Nginx可以將來自客戶端的Upgrade請(qǐng)求發(fā)送到后端服務(wù)器,Upgrade和Connection的頭信息必須被顯式的設(shè)置。如上圖代碼中第三個(gè)紅圈。

五、總結(jié)

通過Http升級(jí)機(jī)制將Http升級(jí)為WebSocket。Nginx代理服務(wù)器通過修改配置的方式解決了WebSocket屬于hop-by-hop協(xié)議的問題、并通過保持分別與客戶端和服務(wù)端的連接一直處于打開狀態(tài)從而實(shí)現(xiàn)WebSokcet的代理。

【凡本網(wǎng)注明來源非中國(guó)IDC圈的作品,均轉(zhuǎn)載自其它媒體,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。】

延伸閱讀:

  • 臺(tái)達(dá)電動(dòng)車及插電式混合動(dòng)力車技術(shù)實(shí)力獲菲亞特克萊斯勒汽車肯定
  • Hadoop與 Spark - 選擇正確的大數(shù)據(jù)框架
  • Hadoop現(xiàn)在怎么樣了?

標(biāo)簽: WebSocket Nginx WebSocket與Ngi

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:“北上深”數(shù)據(jù)中心2019產(chǎn)業(yè)政策淺析,數(shù)據(jù)中心

下一篇:英特爾和SAP深化數(shù)據(jù)中心技術(shù)合作