Apache-2.2
Apache 代理和重寫,將目錄附加到 URL
我有一個從本地網路執行的後端伺服器
http://10.0.2.20/
,它的服務類似於:/ (root) | |_user1/ | |_www/ | |_private/ | |_user2/ |_www/ |_private/ (etc.)
訪問
http://10.0.2.20/user1/
當然包含“www”和“private”文件夾,並通過使用 Apache 的反向代理的公共伺服器進行代理。我想要它,所以會發生以下情況:
http://public-proxy-server/user1/
實際上顯示了內容,http://10.0.2.20/user1/www/
而沒有在 URL 中指明。(/private/ 將無法通過公共代理伺服器訪問)。這裡的關鍵是它是動態的,所以所有請求都
http://public-proxy-server/*/
應該顯示來自http://10.0.2.20/*/www/
. 同樣,代理目前工作正常;下面是配置:(在公共伺服器上)
<VirtualHost *:80> ServerName www.domain.com ProxyRequests Off ProxyPreserveHost On ProxyVia full ProxyPass / http://10.0.2.20/ ProxyPassReverse / http://10.0.2.20/ </VirtualHost>
(在後端伺服器上)
<VirtualHost *:80> ... #this directory contains folders 'user1' and 'user2' DocumentRoot /var/www/ ... </VirtualHost>
在反向代理伺服器上,使用
ProxyPassMatch
:ProxyPassMatch ^/([^/]+)/(.*)$ http://10.0.2.20/$1/www/$2
而且您可能仍然需要
/
根代理,因此請保留它ProxyPass
- 只要確保它低於,ProxyPassMatch
因為它們已按順序檢查。