Apache-2.4

如何在 apache 反向代理下在兩個條件下進行反向

  • August 18, 2020

我是 apache 反向代理的新手,我試圖像下面這樣反轉 Url 呼叫:

原則轉發模式.jpg

我能夠像這樣轉發 Webserver1 上的所有請求:

<VirtualHost *:80>  

ProxyPreserveHost On  
ServerName localhost  
ProxyPass / http://webserver1/  
ProxyPassReverse / http://webserver1/  
</VirtualHost>

但我無法對 Url Param 範例設置條件:

如果 “http://reverse.proxy.com/?param=foo" 然後將其轉發到 WebServer 2

而且,我不知道這些規則是否可以在相同的配置上。

非常感謝您的幫助

對於像你描述的條件,你必須使用 mod_rewrite 來代理。

RewriteCond %{QUERY_STRING} ^param=foo$
RewriteRule ^(.*) http://webserver2/$1 [P,L]
RewriteRule ^(.*) http://webserver1/$1 [P,L]

說明:首先我們檢查您要匹配的查詢字元串,如果匹配,則應用以下 RewriteRule,但如果不匹配,則應用第二個 RewriteRule。

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