国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

Nginx轉發socket端口配置詳解

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文化| 威宁| 吉安市| 安徽省| 崇明县| 靖安县| 禄丰县| 花莲市| 沛县| 宁蒗| 中西区| 晋宁县| 陕西省| 桦甸市| 伊吾县| 定陶县| 铁力市| 湛江市| 杭锦后旗| 武威市| 东莞市| 鸡东县| 宜章县| 留坝县| 交城县| 洮南市| 同心县| 高陵县| 稻城县| 务川| 噶尔县| 高唐县| 台北市| 湘潭市| 清远市| 九龙坡区| 金平| 恩施市| 寿阳县| 松潘县| 静海县|