ホームページ >バックエンド開発 >Golang >Go-WebSocket を Apache mod_proxy_wstunnel と正常に統合するにはどうすればよいですか?

Go-WebSocket を Apache mod_proxy_wstunnel と正常に統合するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-25 21:26:17962ブラウズ

How to Successfully Integrate Go-WebSocket with Apache mod_proxy_wstunnel?

Apache mod_proxy_wstunnel の背後に Go-WebSocket を統合する

Apache のリバース プロキシの機能を go-websocket で利用しようとして、開発者は次のような問題に遭遇しました。いくつかの

Apache 構成

以下は使用される Apache 構成です:

<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 エラーが発生しました。

トラブルシューティング

さまざまな情報源を調べた結果、この問題を解決するために次の手順が実行されました:

  • トレーリングスラッシュ: Aralo が提案したように、末尾のスラッシュが WebSocket パス (/ws/) に追加されました。これにより、Apache は有効な GET リクエストを持つ WebSocket のみを処理できるようになりました。
  • ProxyPass Order: James Henstridge の提案に従って、/ws/ の ProxyPass は / 行の前に配置され、順序が変更されました。どのリクエストが処理されました。
  • オリジン チェック削除: ServeWs() 関数内の原点チェックが特定され、削除され、問題が解決されました。

統合の成功

これらの変更により、成功したことが確認されましたApache mod_proxy_wstunnel の背後に go-websocket を統合。 Apache エラー ログは、初期エラーの特定と修正に役立ちました。

以上がGo-WebSocket を Apache mod_proxy_wstunnel と正常に統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。