婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Nginx轉發socket端口配置詳解

Nginx轉發socket端口配置詳解

熱門標簽:賀州市地圖標注app 智能電話機器人線路 百度地圖標注要不要錢 金融行業外呼線路 長沙開福怎么申請400電話 高德地圖標注無營業執照 江蘇電銷外呼防封系統是什么 東莞人工智能電銷機器人供應商 廣州電銷機器人系統圖

Nginx 轉發 socket 端口常見場景:在線學習應用,在常規功能之外,增加一個聊天室功能,后端選擇 swoole 提供服務提供者,同時不想前端直接 ip:port 方式鏈接到服務,需要使用 Nginx 進行轉發。

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

其中,"Upgrade" 是 逐跳(hop-by-hop) 頭,無法從客戶端轉發到代理服務器,通過轉發代理,客戶端可以使用 CONNECT 方法來規避此問題。但是,這不適用于反向代理,因為客戶端不知道任何代理服務器,并且需要在代理服務器上進行特殊處理。同時逐跳頭包含 "Upgrade" 和 "Connection" 都無法傳遞,則需要在轉換為 Websocket 的時候帶上這兩個參數:例如:

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

進階:讓轉發到代理服務器的 "Connection" 頭字段的值,取決于客戶端請求頭的 "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 為一組負載均衡的服務器,只有單臺服務器的,可以寫成 proxy_pass http://127.0.0.1:9501; 這樣的。

此外,默認情況下,在 60 秒內未傳送任何數據的鏈接將被關閉,時間可以使用 proxy_read_timeout 指令來延長。或者代理服務器可以配置定時發送 ping 幀來重置超時及檢查鏈接是否可用。

參考鏈接: Nginx Websocket proxying

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

標簽:廊坊 洛陽 北京 玉樹 張家界 滄州 永州 松原

巨人網絡通訊聲明:本文標題《Nginx轉發socket端口配置詳解》,本文關鍵詞  Nginx,轉發,socket,端口,配置,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Nginx轉發socket端口配置詳解》相關的同類信息!
  • 本頁收集關于Nginx轉發socket端口配置詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 叶城县| 南木林县| 拉萨市| 平凉市| 台山市| 桃源县| 赤水市| 陆河县| 油尖旺区| 雅安市| 保德县| 南宁市| 怀化市| 同仁县| 信宜市| 纳雍县| 深泽县| 巩义市| 淳化县| 博野县| 普陀区| 合作市| 甘南县| 高邮市| 宁晋县| 阿鲁科尔沁旗| 宜丰县| 萝北县| 丹巴县| 眉山市| 中牟县| 祥云县| 德兴市| 岱山县| 澄城县| 肇庆市| 措勤县| 大新县| 井研县| 辽源市| 舞钢市|