如何在 apache 反向代理下的两种情况下反向
How to reverse on two conditions under an apache reverse proxy
我是 apache 反向代理的新手,我正在尝试反向调用 Url,如下所示:
我可以像这样转发 Webserver1 上的所有请求:
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
ProxyPass / http://webserver1/
ProxyPassReverse / http://webserver1/
</VirtualHost>
但我无法在 Url 参数示例上设置条件:
If "http://reverse.proxy.com/?param=foo" 然后转发到 WebServer 2
而且,我不知道这些规则是否可以在相同的配置上。
非常感谢您的帮助
你应该尝试一次..
<虚拟主机 *:80>
服务器名称本地主机
重写引擎开启
ProxyPass / http://webserver1/
ProxyPassReverse / http://webserver1/
RewriteRule "^/foo.html$" "bar.html" [R]
最后,我找到了这样做的解决方案。
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
RewriteEngine on
logLevel warn rewrite:trace3
RewriteCond %{REQUEST_URI} ^/ [NC]
RewriteCond %{QUERY_STRING} ^param=(.*)
RewriteRule (.*) http://Webserver2/?param=%1? [P]
ProxyPassMatch / http://Webserver1
ProxyPassReverse / http://Webserver1
</VirtualHost>
看起来工作正常
我是 apache 反向代理的新手,我正在尝试反向调用 Url,如下所示:
我可以像这样转发 Webserver1 上的所有请求:
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
ProxyPass / http://webserver1/
ProxyPassReverse / http://webserver1/
</VirtualHost>
但我无法在 Url 参数示例上设置条件:
If "http://reverse.proxy.com/?param=foo" 然后转发到 WebServer 2
而且,我不知道这些规则是否可以在相同的配置上。
非常感谢您的帮助
你应该尝试一次..
<虚拟主机 *:80>
服务器名称本地主机
重写引擎开启
ProxyPass / http://webserver1/
ProxyPassReverse / http://webserver1/
RewriteRule "^/foo.html$" "bar.html" [R]
最后,我找到了这样做的解决方案。
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
RewriteEngine on
logLevel warn rewrite:trace3
RewriteCond %{REQUEST_URI} ^/ [NC]
RewriteCond %{QUERY_STRING} ^param=(.*)
RewriteRule (.*) http://Webserver2/?param=%1? [P]
ProxyPassMatch / http://Webserver1
ProxyPassReverse / http://Webserver1
</VirtualHost>
看起来工作正常