Apache 2.4 中使用 .htaccess 进行 IP 阻止 - 不起作用

Apache 2.4 中使用 .htaccess 进行 IP 阻止 - 不起作用

我想阻止特定 IP 地址,但允许所有其他 IP 地址。我仍然在为此苦苦挣扎。

首先我修改了apache2.conf文件使其看起来像这样:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

AllowOverrideNoneAll

.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 中按预期工作

相关内容