如果请求来自公共IP 50.12.95.78。 Proxypass到http://192.168.1.100/quote url。
如果请求来自其他公共IP。 Proxypass到http://192.168.1.100/ url
apache中的设置是什么?反向代理不会在条件下工作。
答案 0 :(得分:0)
您可以使用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
被应用和代理时
RewriteCond
指令已匹配,即,如果远程IP
地址是50.12.95.78。
RewriteRule
指令。ProxyPathReverse
指令该路径已被修改。RewriteRule
如果第一个没有评估,则会自动应用。ProxyPathReverse
指令已修改为重写响应头
基于 proxy_pass_path 变量。
超出您的问题范围,请记住,这种代理不会实现任何实际的安全形式。通过请求http://192.168.1.100/quote
,仍然可以访问http://<Proxy_Host>/quote
以外的IP地址,而不是50.12.95.78。