Apache 使用ip白名单的条件proxypass ajp规则

Apache 使用ip白名单的条件proxypass ajp规则,apache,conditional,config,ajp,proxypass,Apache,Conditional,Config,Ajp,Proxypass,我已经成功创建了一个ProxyPass ajp规则,该规则运行良好,但现在我想使用ip白名单限制对某些URL的访问。换句话说,当某人来自不在白名单上的ip时,请求不应该被代理传递(理想情况下,应该发出某种拒绝访问的请求) 我无法控制代理传递到的机器,因此无法将ip白名单放在该机器的配置上。这就是为什么我试图在具有proxypass规则的同一台机器上配置它 使用“Allow from”-规则定义请求无效,因为请求仍然是代理传递的。我猜这仅仅意味着proxypass规则先于位置规则 我试图通过根据远

我已经成功创建了一个ProxyPass ajp规则,该规则运行良好,但现在我想使用ip白名单限制对某些URL的访问。换句话说,当某人来自不在白名单上的ip时,请求不应该被代理传递(理想情况下,应该发出某种拒绝访问的请求)

我无法控制代理传递到的机器,因此无法将ip白名单放在该机器的配置上。这就是为什么我试图在具有proxypass规则的同一台机器上配置它

使用“Allow from”-规则定义请求无效,因为请求仍然是代理传递的。我猜这仅仅意味着proxypass规则先于位置规则

我试图通过根据远程地址设置一个环境变量来解决这个问题(因为这样我就可以将非白名单IP代理到不存在的url上——虽然不漂亮,但可以实现这个目标),但proxypass规则似乎不适用于环境变量。像这样简单的事情:

SetEnv custom_proxypath=/
ProxyPass %{ENV:custom_proxypath} ajp://10.50.40.21:8009/
ProxyPassReverse %{ENV:custom_proxypath} ajp://10.50.40.21:8009/
不起作用。当

ProxyPass / ajp://10.50.40.21:8009/
ProxyPassReverse / ajp://10.50.40.21:8009/
工作完美


我别无选择。其他人对如何处理这个问题有什么建议吗?

我今天学到了。。。。SetEnv在请求周期中的应用晚于ProxyPass,因此没有及时设置。但是,SetEnvIf应用得足够早,使用RewriteCond/RewriteRule设置的环境变量也是如此。您应该能够将其重构为setenif,该setenif始终为true,这样就可以完成任务