主頁 > 知識(shí)庫 > Nginx轉(zhuǎn)發(fā)socket端口配置詳解

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

熱門標(biāo)簽:賀州市地圖標(biāo)注app 智能電話機(jī)器人線路 百度地圖標(biāo)注要不要錢 金融行業(yè)外呼線路 長沙開福怎么申請(qǐng)400電話 高德地圖標(biāo)注無營業(yè)執(zhí)照 江蘇電銷外呼防封系統(tǒng)是什么 東莞人工智能電銷機(jī)器人供應(yīng)商 廣州電銷機(jī)器人系統(tǒng)圖

Nginx 轉(zhuǎn)發(fā) socket 端口常見場(chǎng)景:在線學(xué)習(xí)應(yīng)用,在常規(guī)功能之外,增加一個(gè)聊天室功能,后端選擇 swoole 提供服務(wù)提供者,同時(shí)不想前端直接 ip:port 方式鏈接到服務(wù),需要使用 Nginx 進(jìn)行轉(zhuǎn)發(fā)。

常規(guī)情況,我們可以在用戶頁面,直接建立 socket 鏈接,但這樣的操作會(huì)暴露端口,帶來一定的安全隱患,使用 Nginx 進(jìn)行轉(zhuǎn)發(fā),可以隱藏端口。額外的問題就是一些 header 參數(shù)也需要在轉(zhuǎn)發(fā)過程中帶給 socket 服務(wù)提供者,其他只需要 Nginx 處理一下從常規(guī)協(xié)議轉(zhuǎn)換到 Websocket 就可以。

其中,"Upgrade" 是 逐跳(hop-by-hop) 頭,無法從客戶端轉(zhuǎn)發(fā)到代理服務(wù)器,通過轉(zhuǎn)發(fā)代理,客戶端可以使用 CONNECT 方法來規(guī)避此問題。但是,這不適用于反向代理,因?yàn)榭蛻舳瞬恢廊魏未矸?wù)器,并且需要在代理服務(wù)器上進(jìn)行特殊處理。同時(shí)逐跳頭包含 "Upgrade" 和 "Connection" 都無法傳遞,則需要在轉(zhuǎn)換為 Websocket 的時(shí)候帶上這兩個(gè)參數(shù):例如:

location /chat/ {
  proxy_pass http://backend;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}

進(jìn)階:讓轉(zhuǎn)發(fā)到代理服務(wù)器的 "Connection" 頭字段的值,取決于客戶端請(qǐng)求頭的 "Upgrade" 字段值。例如:

http {
  map $http_upgrade $connection_upgrade {
    default upgrade;
    ''   close;
  }

  server {
    ...

    location /chat/ {
      proxy_pass http://backend;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
    }
  }

注意:示例中的 http://backend 為一組負(fù)載均衡的服務(wù)器,只有單臺(tái)服務(wù)器的,可以寫成 proxy_pass http://127.0.0.1:9501; 這樣的。

此外,默認(rèn)情況下,在 60 秒內(nèi)未傳送任何數(shù)據(jù)的鏈接將被關(guān)閉,時(shí)間可以使用 proxy_read_timeout 指令來延長?;蛘叽矸?wù)器可以配置定時(shí)發(fā)送 ping 幀來重置超時(shí)及檢查鏈接是否可用。

參考鏈接: Nginx Websocket proxying

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

標(biāo)簽:廊坊 洛陽 北京 玉樹 張家界 滄州 永州 松原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx轉(zhuǎn)發(fā)socket端口配置詳解》,本文關(guān)鍵詞  Nginx,轉(zhuǎn)發(fā),socket,端口,配置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Nginx轉(zhuǎn)發(fā)socket端口配置詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Nginx轉(zhuǎn)發(fā)socket端口配置詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章