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

Uri*_*ets 5 proxy ip restrictions apache-2.2

我有需要限制特定 IP (10.0.0.5) 访问的 URL。当我以下一种方式直接访问时,它工作得非常完美:

<Location /incoming>
    Order Allow,Deny
    Deny from 10.0.0.5
    Allow from all
</Location>
Run Code Online (Sandbox Code Playgroud)

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

10.0.0.5, 192.168.1.43 - - [24/May/2017:16:03:54 +0300]“POST /传入 HTTP/1.0”200 698 0/6899“-”“-”

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

<Proxy /incoming >
    Order Allow,Deny
    Deny from 10.0.0.5
    Allow from all
</Proxy>
Run Code Online (Sandbox Code Playgroud)

这也没有帮助。

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

Dio*_*ght 5

如果代理设置了 X-Forwarded-For 标头,您应该能够使用它:

<Location /incoming>
    Order Deny,Allow
    SetEnvIf X-Forwarded-For "10.0.0.5" DenyAccess
    Deny from env=DenyAccess
</Location>
Run Code Online (Sandbox Code Playgroud)

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

您还可以引用块env中的标志Require,如此处所示