首頁 >後端開發 >Golang >為什麼我的 mod_proxy_wstunnel 和 Go-websocket 設定失敗,如何修復?

為什麼我的 mod_proxy_wstunnel 和 Go-websocket 設定失敗,如何修復?

DDD
DDD原創
2025-01-01 06:58:10543瀏覽

Why Does My mod_proxy_wstunnel and Go-websocket Setup Fail, and How Can I Fix It?

Mod_proxy_wstunnel 和Go-websocket:一個問題及其解決方案

在嘗試將Apache 的使用時,使用者可能會遇到障礙。一位用戶尋求協助來配置必要的設定。

提供了問題的詳細描述:雖然反向代理成功建立,但 Websocket 連線無法啟動。使用者的配置反映了以下內容:

<VirtualHost *:80>
    DocumentRoot /var/www/foobar
    ServerName foobar.com
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /ws/ ws://localhost:8080/ws/
    ProxyPassReverse /ws/ ws://localhost:8080/ws/
    ErrorLog logs/error_log-foobar
    CustomLog logs/access_log-foobar common
    LogLevel debug
</VirtualHost>

最初,使用者收到「403 Forbidden」回應,這表示有來源檢查問題。停用來源檢查後,錯誤轉變為“400 Bad Request”,表示伺服器沒有收到升級請求。

在收集了眾多來源的建議後,用戶得出了一個解決方案:

  1. 尾部斜杠: 正如Aralo 指出的,向WebSocket 路徑添加尾部斜杠(“/ws/”)至關重要。 Apache 似乎需要有效的 GET 請求才能進行 WebSocket 處理。
  2. ProxyPass 順序: James Henstridge 正確地指出 ProxyPass 指令的順序很重要。 「/ws/」的 ProxyPass 應位於常規「/」之前。
  3. 來源檢查刪除: go-websocket 範例程式碼在 ServeWs() 函數中包含來源檢查,這會導致已刪除。

實作這些變更解決了問題,並且使用者能夠成功建立 Websocket Apache mod_proxy_wstunnel 背後的連線。

以上是為什麼我的 mod_proxy_wstunnel 和 Go-websocket 設定失敗,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn