したがって、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書き換えルールを使用せずに同じ種類のプロキシパスを実行することは可能ですか?
これは私が想像していたよりもずっと簡単だったことがわかりました...リライターのフラグを変更するだけでうまくいったようです。
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