ホームページ > バックエンド開発 > Golang > mod_proxy_wstunnel と Go-websocket のセットアップが失敗するのはなぜですか? どうすれば修正できますか?

mod_proxy_wstunnel と Go-websocket のセットアップが失敗するのはなぜですか? どうすれば修正できますか?

DDD
リリース: 2025-01-01 06:58:10
オリジナル
578 人が閲覧しました

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

Mod_proxy_wstunnel と Go-websocket: 問題とその解決策

Apache の mod_proxy_wstunnel を go-websocket 実装で使用しようとすると、ユーザーは障害物に遭遇する可能性があります。あるユーザーは、必要な設定の構成について支援を求めました。

問題の詳細な説明が提供されました。リバース プロキシは正常に確立されましたが、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 は、WebSocket の処理に有効な GET リクエストを必要とするようです。
  2. ProxyPass Order: James Henstridge は、ProxyPass ディレクティブの順序が重要であると正しく指摘しました。 「/ws/」の ProxyPass は、一般的な「/」の前に置く必要があります。
  3. Origin Check Removal: go-websocket サンプル コードには、ServeWs() 関数にオリジン チェックが含まれています。

これらの変更を実装すると問題が解決され、ユーザーは正常に実行できるようになりました。 Apache の mod_proxy_wstunnel の背後で WebSocket 接続を確立します。

以上がmod_proxy_wstunnel と Go-websocket のセットアップが失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート