如果请求来自公共IP 50.12.95.78。 Proxypass到http://192.168.1.100/quote网址。
如果请求来自其他公共IP。 Proxypass到http://192.168.1.100/网址
apache中的设置是什么?如果条件,反向代理不会工作。
您可以使用mod_proxy
和mod_rewrite
在Apache httpd中设置条件反向代理。
例如,如果您最初使用以下配置设置了反向代理:
ProxyPass / http://192.168.1.100/
ProxyPassReverse / http://192.168.1.100/
它可以通过使用proxy flag on a RewriteRule使条件。示例配置可能如下所示:
RewriteEngine On
ProxyPassInterpolateEnv On
RewriteCond "%{REMOTE_ADDR}" =50.12.95.78
RewriteRule (.*) http://192.168.1.100/quote$1 [P,E=proxy_pass_path:/quote]
RewriteRule (.*) http://192.168.1.100$1 [P]
ProxyPassReverse / http://192.168.1.100${proxy_pass_path}/ interpolate
RewriteRule
指令匹配时,即只有远程IP地址为50.12.95.78时才应用和代理第一个RewriteCond
。
[P] roxy标志还可以防止应用更多的RewriteRule
指令。
环境变量proxy_pass_path设置为告诉ProxyPathReverse
指令路径已被修改。RewriteRule
会自动应用。ProxyPathReverse
指令以基于proxy_pass_path变量重写响应头。超出您的问题范围,请记住,这种代理不会实现任何真正的安全形式。 50.12.95.78以外的IP地址仍然可以通过请求http://192.168.1.100/quote
来访问http://<Proxy_Host>/quote
。