WebSocketを実装するバックエンドCherryPyサーバーのApacheリダイレクトルールを適切に設定する方法を理解しようとしています(ws4pyモジュールを介して実行)。問題は、書き換えエンジンまたはプロキシパスを使用すると、リダイレクトされたリクエストのアップグレードヘッダーが削除されるため、CherryPyサーバーがそれについて苦情を申し立て、ハンドシェイクステップで失敗することです。
私が持っているシナリオは次のとおりです。WebSocketをセットアップするws4pyモジュールを備えたCherryPyサーバーがあります。localhost:9000で実行されます。着信リクエストをバックエンドサーバーにリダイレクトするだけのapacheフロントエンドが必要です(それ以上のことを行いますが、簡単にするために、まさにそれを行う必要があります)。
私が持っているアパッチルールは単純です
RewriteRule ^(/websocket(/.*)?)$ http://some_host:9000$1 [P,L]
したがって、/ websocketで始まるすべてのリクエストは、ポート9000で実行されているバックエンドサーバーにリダイレクトされます。Pフラグはプロキシを表し、Lは書き換えプロセスを停止します(http://borkweb.com/story/apache-rewrite-cheatsheetを参照)。 )。
クライアントがHTTPヘッダーUpgrade:websocketを使用してリクエストを送信すると、apacheエンジン(書き換えモジュール)がそれを取り除き、WebSocketハンドシェイクが失敗します。
アップグレードヘッダーの存在を許可するように書き換えルールを修正する方法はありますか?