Apache HTTP Server 第 2.4 版
說明 | mod_proxy 的 Websockets 支援模組 |
---|---|
狀態 | 延伸模組 |
模組識別碼 | proxy_wstunnel_module |
原始檔 | mod_proxy_wstunnel.c |
相容性 | 適用於 httpd 2.4.5 及更新版本 |
此模組需要mod_proxy
的服務。它提供支援,用於建立與後端 Websockets 伺服器的 WebSocket 連線隧道路由。連線會自動升級成 WebSocket 連線
Upgrade: WebSocket Connection: Upgrade
對 echo.websocket.org
等 Websockets 伺服器發出代理請求時,可使用 ProxyPass
指令
ProxyPass "/ws2/" "ws://echo.websocket.org/" ProxyPass "/wss2/" "wss://echo.websocket.org/"
同時代理 HTTP 和 Websockets,同時並使用專門的一組 URL (僅限 Websockets),可藉由在 HTTP 指令前指定 Websockets ProxyPass
指令來完成
ProxyPassMatch ^/(myApp/ws)$ ws://backend.example.com:9080/$1 ProxyPass / http://backend.example.com:9080/
同時代理 HTTP 和 Websockets,同時 Websockets URL 不僅限於 Websockets 或無法預先得知時,可使用 RewriteRule
指令來設定 Websockets 代理
ProxyPass / http://example.com:9080/ RewriteEngine on RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule ^/?(.*) "ws://example.com:9080/$1" [P,L]
可使用 mod_proxy_balancer
來達成多個後端負載平衡。
此模組也可用於升級至非 WebSocket 的其他協定,方法是在 ProxyPass
指令中將 upgrade 參數設為自訂協定名稱。特殊值 upgrade=NONE
和 upgrade=ANY
可用於測試/強制升級,但基於安全性考量,不建議在實際應用時使用。NONE
的意思是略過標頭檢查,但仍會始終進行至 WebSocket 的升級/隧道路由。ANY
的意思是將使用客戶端所請求的任何協定來執行升級/隧道路由。
說明 | 指示此模組允許 mod_proxy_http 處理要求 |
---|---|
語法 | ProxyWebsocketFallbackToProxyHttp 開啟|關閉 |
預設 | ProxyWebsocketFallbackToProxyHttp 開啟 |
內容 | 伺服器組態,虛擬主機 |
狀態 | 延伸模組 |
模組 | mod_proxy_wstunnel |
相容性 | 可用於 httpd 2.4.48 及更新版本 |
自 httpd 2.4.47 起,mod_proxy_http
可以根據 RFC 7230 處理 WebSocket 升級和隧道,此指令控制 mod_proxy_wstunnel
是否將此資料傳遞給 mod_proxy_http
(預設會傳遞)。
設定為 關閉 會讓 mod_proxy_wstunnel
處理 WebSocket 要求,如同 httpd 2.4.46 及更早版本。