使用mod_rewrite進行代理

2019-10-16 22:02:11

本文描述了如何使用RewriteRule[P]標誌將內容代理到另一台伺服器。提供了許多描述常見場景的組態。

使用mod_rewrite代理內容

mod_rewrite提供[P]標誌,允許通過mod_proxy將URL傳遞到另一個伺服器。這裡給出了兩個例子。在一個範例中,URL直接傳遞到另一個伺服器,並且就像它是本地URL一樣。在另一個範例中,我們將缺少的內容代理到後端伺服器。

解決:
要簡單地將URL對映到另一個伺服器,我們使用[P]標誌,如下所示:

RewriteEngine  on
RewriteBase    "/products/"
RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

在第二個範例中,僅在無法在本地找到資源時,才會代理請求。當您從一台伺服器遷移到另一台伺服器,並且您不確定是否所有內容都已遷移時,這非常有用。

RewriteCond "%{REQUEST_FILENAME}"       !-f
RewriteCond "%{REQUEST_FILENAME}"       !-d
RewriteRule "^/(.*)" "http://old.example.com/$1" [P]
ProxyPassReverse "/" "http://old.example.com/"