亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解nginx代理socket.io服務(wù)踩坑

 更新時(shí)間:2018年10月30日 08:35:37   作者:youmai の Blog  
這篇文章主要介紹了詳解nginx代理socket.io服務(wù)踩坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

nginx代理了兩臺(tái)socket.io服務(wù)器。socket.io的工作模式是polling升級(jí)到websocket

現(xiàn)象

通過(guò)nginx請(qǐng)求服務(wù)時(shí),出現(xiàn)了大量的400錯(cuò)誤,有時(shí)候能升級(jí)到websocket,有時(shí)候會(huì)一直報(bào)錯(cuò)。但是直接通過(guò) ip+端口 訪問(wèn)時(shí),100%能成功。

分析

sid

sid是我們這個(gè)問(wèn)題的關(guān)鍵。在初始創(chuàng)建連接時(shí)(polling模式就是在模擬一個(gè)長(zhǎng)連接),客戶端會(huì)發(fā)起這樣的請(qǐng)求:

https://***/?EIO=3&transport=polling&t=1540820717277-0

服務(wù)端收到后會(huì)創(chuàng)建一個(gè)對(duì)象,綁定在這個(gè)連接上,同時(shí)返回一個(gè)sid(session id),來(lái)標(biāo)記這個(gè)會(huì)話。會(huì)話指什么呢,會(huì)話是一連串的交互,這些交互之間是有聯(lián)系的,在我們這個(gè)場(chǎng)景下就是,下一次的http請(qǐng)求到來(lái),我需要找到之前綁定在理論上的長(zhǎng)連接(這里還沒(méi)有websocket,所以是理論上的)上的那個(gè)對(duì)象。我們知道http請(qǐng)求是無(wú)狀態(tài)的,每個(gè)請(qǐng)求之間獨(dú)立,所以socket.io引入了sid來(lái)做這件事。服務(wù)端收到請(qǐng)求后會(huì)生成一個(gè)sid,看下response:

復(fù)制代碼 代碼如下:
{"sid":"EoGaL3fRQlpTOaLp5eST","upgrades":["websocket"],"pingInterval":8000,"pingTimeout":10000}

之后每次請(qǐng)求都需要帶上這個(gè)sid,建立websocket請(qǐng)求的連接也不例外。所以說(shuō),sid是polling,以及polling升級(jí)到websocket的關(guān)鍵。這之后的請(qǐng)求類似于:

https://***/?EIO=3&transport=polling&t=1540820717314-1&sid=EoGaL3fRQlpTOaLp5eST

or

wss://***/?EIO=3&transport=websocket&t=1540820717314-1&sid=EoGaL3fRQlpTOaLp5eST

那么問(wèn)題來(lái)了,如果請(qǐng)求是帶上的sid不是服務(wù)端生成的會(huì)怎樣呢?服務(wù)端會(huì)不認(rèn)識(shí),給你返回一個(gè)400,并告訴你

invalid sid

我們遇到的便是這個(gè)問(wèn)題,nginx默認(rèn)的負(fù)載均衡策略是輪詢,所以請(qǐng)求有可能會(huì)打到不是生成這個(gè)sid的機(jī)器上去,這時(shí)候我們就會(huì)收到一個(gè)400,如果運(yùn)氣好,可能也會(huì)打到原來(lái)的機(jī)器上,運(yùn)氣更好一點(diǎn),甚至能堅(jiān)持到websocket連接建立。

解決

這里提出兩種方案

  1. nginx的負(fù)載均衡采用ip_hash,這樣能保證一個(gè)客戶端的請(qǐng)求都走到一臺(tái)服務(wù)器上
  2. 不使用polling模式,只使用websocket

這兩種方案各有利弊。第二種顯而易見(jiàn),不支持websocket的古老瀏覽器和客戶端將沒(méi)法工作。第一種的問(wèn)題隱藏得比較深,試想,如果你增減了機(jī)器會(huì)怎樣,這時(shí)候ip_hash策略的模將變化,之前的連接將全部失效,而對(duì)于微服務(wù),擴(kuò)縮容是很頻繁的操作(特別是產(chǎn)品處于發(fā)展期),這種有損的擴(kuò)縮容很大概率是不能接受的。

綜上,建議直接使用websocket,畢竟不支持websocket的老版本占比很少,而且相對(duì)于先polling,耗時(shí)也會(huì)減少。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nginx跨域訪問(wèn)配置方式(Web反向代理跨域訪問(wèn)配置)

    Nginx跨域訪問(wèn)配置方式(Web反向代理跨域訪問(wèn)配置)

    這篇文章主要介紹了Nginx跨域訪問(wèn)配置方式(Web反向代理跨域訪問(wèn)配置),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx轉(zhuǎn)發(fā)socket端口配置詳解

    Nginx轉(zhuǎn)發(fā)socket端口配置詳解

    這篇文章主要介紹了Nginx轉(zhuǎn)發(fā)socket端口配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Nginx下SSL證書(shū)安裝部署步驟介紹

    Nginx下SSL證書(shū)安裝部署步驟介紹

    大家好,本篇文章主要講的是Nginx下SSL證書(shū)安裝部署步驟介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12
  • Nginx實(shí)現(xiàn)流量控制的示例代碼

    Nginx實(shí)現(xiàn)流量控制的示例代碼

    本文主要介紹了Nginx實(shí)現(xiàn)流量控制的示例代碼,可以用來(lái)限制用戶在給定時(shí)間內(nèi)HTTP請(qǐng)求的數(shù)量,保護(hù)服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Nginx+CI框架出現(xiàn)404錯(cuò)誤怎么解決

    Nginx+CI框架出現(xiàn)404錯(cuò)誤怎么解決

    這篇文章主要介紹了Nginx+CI出現(xiàn)404錯(cuò)誤怎么解決的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Nginx單IP地址配置多個(gè)SSL證書(shū)的方法示例

    Nginx單IP地址配置多個(gè)SSL證書(shū)的方法示例

    這篇文章主要介紹了Nginx單IP地址配置多個(gè)SSL證書(shū)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • CentOS6.6 安裝 Tengine 筆記

    CentOS6.6 安裝 Tengine 筆記

    這篇文章主要介紹了CentOS6.6 安裝 Tengine 筆記,本文講解了安裝必要的編譯環(huán)境好、安裝需要的組件、安裝Tengine等步驟,需要的朋友可以參考下
    2015-03-03
  • 權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法

    權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法

    這篇文章主要介紹了權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法,本文中導(dǎo)致 403 Forbidden錯(cuò)誤的原因是配置文件中沒(méi)有指明一個(gè)用戶,需要的朋友可以參考下
    2014-08-08
  • 使用Nginx配置瀏覽器緩存,頁(yè)面展示更快一步

    使用Nginx配置瀏覽器緩存,頁(yè)面展示更快一步

    這篇文章主要介紹了使用Nginx配置瀏覽器緩存,頁(yè)面展示更快一步問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Nginx反向代理location和proxy_pass配置規(guī)則詳細(xì)總結(jié)

    Nginx反向代理location和proxy_pass配置規(guī)則詳細(xì)總結(jié)

    nginx代理訪問(wèn)很好用,但是好多人不清楚location和proxy_pass組合在一起使用時(shí)訪問(wèn)的url被代理的url真實(shí)地址是什么,下面這篇文章主要給大家介紹了關(guān)于Nginx反向代理location和proxy_pass配置規(guī)則的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評(píng)論