apache中的条件反向代理

问题描述 投票:0回答:1

如果请求来自公共IP 50.12.95.78。 Proxypass到http://192.168.1.100/quote网址。

如果请求来自其他公共IP。 Proxypass到http://192.168.1.100/网址

apache中的设置是什么?如果条件,反向代理不会工作。

proxy conditional reverse
1个回答
0
投票

您可以使用mod_proxymod_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
  1. 只有当前面的RewriteRule指令匹配时,即只有远程IP地址为50.12.95.78时才应用和代理第一个RewriteCond。 [P] roxy标志还可以防止应用更多的RewriteRule指令。 环境变量proxy_pass_path设置为告诉ProxyPathReverse指令路径已被修改。
  2. 如果第一个没有评估,第二个RewriteRule会自动应用。
  3. 最后,修改ProxyPathReverse指令以基于proxy_pass_path变量重写响应头。

超出您的问题范围,请记住,这种代理不会实现任何真正的安全形式。 50.12.95.78以外的IP地址仍然可以通过请求http://192.168.1.100/quote来访问http://<Proxy_Host>/quote

© www.soinside.com 2019 - 2024. All rights reserved.