国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荥阳市| 渭南市| 乌拉特前旗| 金阳县| 开鲁县| 汕尾市| 区。| 磐石市| 苍溪县| 崇义县| 漯河市| 榕江县| 海晏县| 武功县| 玛曲县| 樟树市| 和田县| 白河县| 郴州市| 新巴尔虎右旗| 常熟市| 阿图什市| 沛县| 阜南县| 普宁市| 玉山县| 西峡县| 浦北县| 蕲春县| 凭祥市| 九寨沟县| 隆尧县| 麻城市| 磴口县| 新绛县| 五家渠市| 阳信县| 黔江区| 卓尼县| 冀州市| 潜江市|