【问题标题】:conditional proxypass ajp rules using ip whitelist使用ip白名单的条件proxypass ajp规则
【发布时间】:2013-04-16 18:23:20
【问题描述】:

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

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

使用“允许来自”规则定义 不起作用,因为该请求仍然是通过代理传递的。我想这只是意味着 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/

完美运行。

我没有选择。有没有其他人建议如何解决这个问题?

【问题讨论】:

    标签: apache conditional config ajp proxypass


    【解决方案1】:

    我今天学到了这一点.... SetEnv 在请求周期中的应用 比 ProxyPass,所以它没有及时设置。但是,SetEnvIf 应用得足够早,使用 RewriteCond/RewriteRule 设置的环境变量也是如此。您应该能够将其重构为始终为 true 的 SetEnvIf,这样就可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 2013-07-01
      相关资源
      最近更新 更多