プロキシが実行される前にURLの一部(https://myfirstdomain.com/lool/https:/alf.mydomain.com/service/wopi/files/uuid?query_params
)を書き直そうとしていますが、デフォルトのSSL仮想ホストに次の関連セクションがあります。
<IfModule mod_rewrite.c>
RewriteEngine On
LogLevel debug rewrite:trace3
RewriteRule ^lool/https:/alf.mydomain.com\/(.*) lool/https://alf.mydomain.com/$1 [QSA,NE]
</IfModule>
ProxyPass / https://localhost:2323/
ProxyPassReverse / https://localhost:2323/
そして私はこれを書き換えログに見ます:
applying pattern '^lool/https:/alf.mydomain.com' to uri '/lool/https:/alf.mydomain.com/service/wopi/files/uuid
しかし、これを受け取るサービスでは、URLが書き直されていないことがわかります。私が間違っていることについての手がかりをいただければ幸いです。私は基本的に、アクセスできないインフラストラクチャのどこかにプロキシサーバーによって削除された余分な/
を追加しようとしています。
EDIT:バックエンドWOPIサービスのログで、変更されていないリクエストURLが表示されます。
Request from 127.0.0.1:42035: GET /lool/https:/alf.mydomain.com/service/wopi/files/uuid
RewriteRule ^lool/https:/alf.mydomain.com\/(.*) lool/https://alf.mydomain.com/$1 [QSA,NE]
仮想ホストコンテキストで使用する場合、RewriteRule
patternは、スラッシュプレフィックスを含む完全なURLパスに一致します(これは-でのみ削除されます) ディレクトリコンテキスト)。
代わりに、次のようなものを試してください。
RewriteRule ^/lool/https:/(alf\.mydomain\.com/.*) /lool/https://$1 [PT,NE]
スラッシュプレフィックスは、仮想ホストコンテキストで使用する場合、ドキュメントルートの相対URLパスを指定するために、substitutionにも必要です。
substitutionの繰り返しを保存するために、キャプチャされたパターンを拡張してホスト名を含めました。
リテラルドットはRewriteRule
patternでエスケープする必要があります。一方、スラッシュ(/
)はエスケープする必要はありません。
substitutionでクエリ文字列を指定していないため、ここではQSA
フラグは不要です。
Mod_proxyでこれを取得するには、PT
(passthrough
)フラグが必要な場合と不要な場合があります。
また、<IfModule mod_rewrite.c>
ラッパーを削除する必要があります-これがmod_rewriteなしで機能することを意図していない限り?それ以外の場合は、mod_rewriteが使用できないときにエラーをマスクするだけです。