要求 ip xxxx 在 Apache 2.4 中不起作用

Alb*_*ert 4 apache-2.4

我编辑了我的 apache2.conf(在 Ubuntu 上)以限制除了一个 IP 之外的所有访问,但我仍然可以从其他 IP 访问。下面是我的配置:

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require ip x.x.x.x
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require ip x.x.x.x
</Directory>
Run Code Online (Sandbox Code Playgroud)

authz_core 模块已加载,有什么问题吗?谢谢。

Mik*_*giy 5

Apache 2.4 的 IP 地址访问限制示例:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    <IfModule mod_authz_core.c>
      <RequireAny>
        Require ip 127.0.0.1
        Require ip ::1
        Require ip x.x.x.x
      </RequireAny>
    </IfModule> 
</Directory>
Run Code Online (Sandbox Code Playgroud)

不要忘记通过运行以下命令重新启动 apache 服务:

service httpd restart
Run Code Online (Sandbox Code Playgroud)

directory /出于安全原因也不要使用。

  • “当然,最好……检查 mod_authz_core 模块是否已加载”——这不一定“更好”。事实上,这可能更糟。这意味着如果 mod_authz_core 不可用(或曾经被禁用),那么所有用户都可以无错误地获得不受限制的访问 - 这可能是不可取的!`&lt;IfModule&gt;` 包装器的存在意味着包含的指令是 _optional_ 的。@DougMcLean (3认同)
  • “出于安全原因,也不要使用`directory /`。” - 尽管 OP 正在使用 `&lt;Directory /&gt;` 容器来_限制_所有访问(`AllowOverride None`/`Require all denied`),但不允许它,这是推荐的_。 (3认同)
  • 我不明白为什么这会解决问题 - 除非这只是忘记重新启动 Apache 的情况。当然,这更好......检查 mod_authz_core 模块是否已加载,并明确说明 RequireAny 而不是依赖于默认行为......但据我所知,问题中的语法也应该有效? (2认同)