如何在 Apache 反向代理下根据两个条件进行反向操作

如何在 Apache 反向代理下根据两个条件进行反向操作

我是 apache 反向代理的新手,我试图像下面这样反向 Url 调用:

Principe-forwarding-schema.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

而且,我不知道这些规则是否可以采用相同的配置。

非常感谢您的帮助

答案1

对于您描述的条件,您必须使用 mod_rewrite 来代理。

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

说明:首先,我们检查要匹配的查询字符串,如果匹配,则应用以下 RewriteRule,但如果不匹配,则应用第二个 RewriteRule。

相关内容