Reverse-Proxy

Apache基於header的反向代理

  • May 8, 2018

所以我有一個適用於 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 重寫規則的情況下使用相同類型的 proxypass,因為這在我的情況下實際上不起作用?

事實證明這比我想像的要容易得多……只是改變重寫器上的標誌似乎就可以了。

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

引用自:https://serverfault.com/questions/911208