我有一个需要限制特定 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
,如图所示这里。