我已经成功创建了一个可以正常工作的 ProxyPass ajp 规则,但是现在我想使用 ip-whitelist 来限制某些 url 的访问。换句话说,当某人来自不在白名单上的 IP 时,请求不应被代理通过(理想情况下,应该发出某种访问被拒绝)
我无法控制我代理传递到的机器,所以我不能将 ip-whitelist 放在该机器的配置上。这就是为什么我试图在具有 proxypass 规则的同一台机器上配置它。
使用“允许来自”规则定义 <Location /path> 不起作用,因为该请求仍然是通过代理传递的。我想这只是意味着 proxypass 规则先于位置规则。
我试图通过根据远程地址设置一个环境变量来解决它(因为那样我可以将非白名单 ips 代理到不存在的 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/
完美运行。
我别无选择。有没有其他人建议如何解决这个问题?