如何在 Apache 上阻止来自代理的 IP 地址

如何在 Apache 上阻止来自代理的 IP 地址

我有一个需要限制特定 IP (10.0.0.5) 访问的 URL。当我按照以下方式直接访问时,它运行完美:

<Location /incoming>
    Order Allow,Deny
    Deny from 10.0.0.5
    Allow from all
</Location>

但是,当此 IP 来自代理(代理 IP:192.168.1.43)时,此解决方案不起作用。这是我在日志中看到的内容:

10.0.0.5, 192.168.1.43 - - [24/May/2017:16:03:54 +0300] "POST /incoming HTTP/1.0" 200 698 0/6899 "-" "-"

我尝试执行下一步操作-添加代理部分:

<Proxy /incoming >
    Order Allow,Deny
    Deny from 10.0.0.5
    Allow from all
</Proxy>

这也没有帮助。

我需要你们的帮助,朋友们!!!

答案1

如果代理设置了 X-Forwarded-For 标头,您应该可以使用此功能:

<Location /incoming>
    Order Deny,Allow
    SetEnvIf X-Forwarded-For "10.0.0.5" DenyAccess
    Deny from env=DenyAccess
</Location>

Order Deny,Allow是默认允许指令,除非匹配拒绝规则,否则将允许访问。SetEnvIf 根据 X-Forwarded-For 的值有条件地设置环境标志。此处的一条拒绝规则仅在设置该标志时触发。如果没有触发拒绝规则,则允许访问。

您还可以在块env中引用标志Require,如图所示这里

相关内容