apache 中的条件反向代理
Conditional reverse proxy in apache
如果请求来自 public ip 50.12.95.78。代理传递给 http://192.168.1.100/quote url.
如果请求来自其他 public ip。代理传递给 http://192.168.1.100/ url
它在 apache 中的设置是什么?反向代理不会在 if 条件下工作。
您可以利用 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 [P,E=proxy_pass_path:/quote]
RewriteRule (.*) http://192.168.1.100 [P]
ProxyPassReverse / http://192.168.1.100${proxy_pass_path}/ interpolate
- 第一个
RewriteRule
仅在前面的情况下应用和代理
RewriteCond
指令匹配,即如果远程 IP
地址是 50.12.95.78。
- [P]roxy 标志还阻止应用进一步的
RewriteRule
指令。
- 环境变量proxy_pass_path设置为告诉
ProxyPathReverse
指令路径已被修改
- 第二个
RewriteRule
如果第一个未评估,则自动应用。
- 最后,
ProxyPathReverse
修改指令以重写响应头
基于 proxy_pass_path 变量。
超出您的问题范围,请记住,这种代理不会实现任何真正形式的安全。 50.12.95.78 以外的 IP 地址仍然可以通过请求 http://<Proxy_Host>/quote
.
访问 http://192.168.1.100/quote
如果请求来自 public ip 50.12.95.78。代理传递给 http://192.168.1.100/quote url.
如果请求来自其他 public ip。代理传递给 http://192.168.1.100/ url
它在 apache 中的设置是什么?反向代理不会在 if 条件下工作。
您可以利用 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 [P,E=proxy_pass_path:/quote]
RewriteRule (.*) http://192.168.1.100 [P]
ProxyPassReverse / http://192.168.1.100${proxy_pass_path}/ interpolate
- 第一个
RewriteRule
仅在前面的情况下应用和代理RewriteCond
指令匹配,即如果远程 IP 地址是 50.12.95.78。- [P]roxy 标志还阻止应用进一步的
RewriteRule
指令。 - 环境变量proxy_pass_path设置为告诉
ProxyPathReverse
指令路径已被修改
- [P]roxy 标志还阻止应用进一步的
- 第二个
RewriteRule
如果第一个未评估,则自动应用。 - 最后,
ProxyPathReverse
修改指令以重写响应头 基于 proxy_pass_path 变量。
超出您的问题范围,请记住,这种代理不会实现任何真正形式的安全。 50.12.95.78 以外的 IP 地址仍然可以通过请求 http://<Proxy_Host>/quote
.
http://192.168.1.100/quote