我是 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。