我想阻止特定 IP 地址,但允许所有其他 IP 地址。我仍然在为此苦苦挣扎。
首先我修改了apache2.conf
文件使其看起来像这样:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AllowOverride
从None
到All
.htaccess
然后根据下面的 Apache2 文档进行添加:
mod_access_compat 提供的 Allow、Deny 和 Order 指令已弃用,并将在将来的版本中消失。您应避免使用它们,并避免使用推荐使用它们的过时教程。
因此,一个更具前瞻性的答案是:
<RequireAll>
Require all granted
Require not ip XXX.XXX.XXX.XXX
</RequireAll>
其中 XXX.XXX.XXX.XXX 是我的 IP
在access.log
我看到这个:
10.10.10.5 (XXX.XXX.XXX.XXX) - - [2018 年 11 月 27 日:17:11:46 +0000]
其中 10.10.10.5 是 HA 代理。
它仍然不起作用。有什么想法我下一步该怎么做吗?
答案1
“其中 10.10.10.5 是 HA 代理”
你的 Apache 是否采用反向代理?
因为这通常会导致 Apache 仅将反向代理服务器的 ip 地址视为客户端 ip 地址(而不是客户端的实际 ip 地址),这使得常见的 ip 地址限制变得不可能。
HAProxy 可以配置为转发实际的客户端 IP 地址(请参阅 https://www.haproxy.com/blog/haproxy/proxy-protocol/)并且需要重新配置 Apache 才能使用该客户端 IP 地址https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html 然后你可以看到客户端 IP 地址过滤在 Apache httpd 中按预期工作