web-dev-qa-db-ja.com

ヘッダーに基づくApacheリバースプロキシ

したがって、99%のケースで機能するApacheの構成があります。リクエストのヘッダー値をチェックしており、それに基づいて、307ステータスの正しいAPIバージョンのURLにリダイレクトしています。これは、httpスタックを適切に実装するすべてのクライアントで機能します。残念ながら、これに従わず、すべてのPOSTリクエストをGETに変換するアプリがあります。

これが私が今得たproxy.confです:

RewriteEngine On
RewriteCond %{HTTP:X-Android-Version} =660
RewriteRule ^/services/6/(.*)$ /services/internal/6/$1 [R=307]

RewriteCond %{HTTP:X-Android-Version} >661
RewriteRule ^/services/6/(.*)$ /services/internal/7/$1 [R=307]


ProxyPass /services/internal/7 http://mbe700:8080/services/6
ProxyPass /services/internal/6 http://mbe600:8080/services/6

だから私が疑問に思っているのは:

私の場合は実際には機能しないので、URL書き換えルールを使用せずに同じ種類のプロキシパスを実行することは可能ですか?

2
munHunger

これは私が想像していたよりもずっと簡単だったことがわかりました...リライターのフラグを変更するだけでうまくいったようです。

RewriteEngine On
RewriteCond %{HTTP:X-Android-Version} =660
RewriteRule ^/services/6/(.*)$ /services/internal/6/$1 [P]

RewriteCond %{HTTP:X-Android-Version} >661
RewriteRule ^/services/6/(.*)$ /services/internal/7/$1 [P]


ProxyPass /services/internal/7 http://mbe700:8080/services/6
ProxyPass /services/internal/6 http://mbe600:8080/services/6
1
munHunger