皆さん、私たちは次のシナリオのためにApacheリバースプロキシをセットアップしようとしています。
http://foo.com/APP/v1/main.html
の形式を取りますhttp://foo.com/APP/v2/main.html
/APP/v1/main.html
のようなリクエストパスになります。http://localhost:8080/AppContext/main.html
、rerespective URL(v1、v2など)のバージョンフラグメントのプロキシを(リバース)する必要があります。私はこれをそうしようとしています:
ProxyPassMatch ^/.*?/APP.*?/(.*)$ http://localhost:8080/AppContext/$1
ProxyPassReverse /APP http://localhost:8080/AppContext
私の質問は:
ProxyPassMatch
の使用は正しいですか?ProxyPassReverse
は「静的」です。 /APP
の後に、変数の可能性があるものを認識させるにはどうすればよいですか?洞察をありがとう。
-ラージ
あなたは近いです、バージョンのフラグメントを説明するために正規表現を少し変更してみてください:
ProxyPassMatch ^/.*?/APP.*?/v[0-9]+/(.*)$ http://localhost:8080/AppContext/$1
ProxyPassReverse
は主に、プロキシされたアプリによって提供される応答の場所ヘッダーフィールドのオンザフライでの書き換えを保証するためのものです。したがって、たとえばhttp://localhost:8080/AppContext/something
への301リダイレクトを返すと、Apacheはそれを/APP/v1/something
に変更することを知っているので、プロキシの背後にある情報は公開されません。リバースプロキシで使用される動的URLがあるため、ここではいくつかの選択肢があります。それをHAProxyロードバランサーに送信するか(どこにあるかわからない)、1つだけ選んで最高のものを期待することができます。たとえば、/APP/balancer/
にロードバランサーがあり、それが/APP/v1/
、/APP/v2/
、/APP/v3/
などにリクエストを送信する場合、これを行うことができます。
ProxyPassReverse /APP/balancer http://localhost:8080/AppContext
それ以外の場合は、それを1つだけ指定して、最善の結果を期待できます。
ProxyPassReverse /APP/v1 http://localhost:8080/AppContext