いくつかのアプリケーションのリバース プロキシとして動作する Apache/2.4.6 インストールがあります。今度は別のものを構成する必要があります。HTTP プロキシは正常に動作していますが、Web ページの一部のセクションでは、クライアントが Websocket 接続を開始しようとします。
問題は、URL が部分的に共有されていることです。
HTTP リクエスト:http://domain/context/[whatever]
WSリクエスト:ws://domain/context/specific-text?param1¶m2
ProxyPass が内部に入ることができないため、使用できませんIf
(プロトコルを確認中) <If>
。
試した設定:
<Location /context/specific-text>
ProxyPass ws://internal.domain/context/specific-text
前に
<Location /context/>
ProxyPass http://internal.domain/context/
しかし、動作しません。末尾のスラッシュ (存在しない) が原因と思われます。
詳細情報:
- ソケットは「200」コードを好まないと文句を言っています。Apache は ws 接続を返していませんが、ある時点でプロキシが行われています。
- 試してみた
<Location>
specific-text
書き直すことも考えましたspecific-text/
が、管理していないものを操作するのは好きではありません。アプリケーションは有料製品なので、何か害があるかどうかは尋ねられません。まあ、尋ねることはできますが、回答は期待できません。
答え1
私の場合、次の ProxyPass 設定スニペットが有効です:
ProxyPass /specific wss://0.0.0.0:4000/specific
ProxyPassReverse /specific wss://0.0.0.0:4000/specific
ProxyPass / https://0.0.0.0:4000/
ProxyPassReverse / https://0.0.0.0:4000/
ProxyPass ディレクティブの順序付け
設定された ProxyPass および ProxyPassMatch ルールは、設定順にチェックされます。最初に一致したルールが優先されます。