在 Apache 2.4 中使用 Require 指令允许多个 IP

在 Apache 2.4 中使用 Require 指令允许多个 IP

我正在从 Apache 2.2 迁移到 2.4,并且希望使用“Require”,而不是现在不鼓励使用的Allow, Deny

我的问题:如何通过在配置文件中每行一个地址/范围来允许从一组 IP 地址或范围进行访问?

对于 Apache 2.2,我使用了:

Order deny,allow
Deny from all
Allow from 2001:1000:2000::1/64
Allow from 1.2.3.4
Allow from 1.2.3.10

这如何转化为新的访问控制语法?

答案1

升级文档中提供了有关如何执行此操作的清晰信息。如果需要进行任何其他配置更改,也应该阅读此文档:https://httpd.apache.org/docs/2.4/upgrading.html

另外,您不需要将不同的 IP 地址或网络放在不同的行上。完全可以接受以下做法:

# Apache v2.2
Allow from 1.2.3.4 1.2.3.10
# Apache v2.4
Require ip 1.2.3.4 1.2.3.10

最后,默认情况下,多个 require 指令将被视为位于一个<RequireAny>块中,因此除非您要形成更复杂的嵌套分组,否则您无需添加它。当然,您可能希望澄清这一点。参考:https://httpd.apache.org/docs/2.4/howto/auth.html#beyond

附加信息:另一个想法是,升级时,您一定要检查所有配置(包括htaccess您可能拥有的任何文件),并将较旧的 Apache v2.2 指令转换为 Apache v2.4 指令,然后注释掉模块的加载mod_access_compat。混合使用 v2.2 和 v.24 指令可能会导致一些非常不寻常的问题,这些问题很难解决。

答案2

我知道这是一篇老帖子,但我认为它可以帮助我提供经常使用的功能示例!

在 apache 2.2 中将是这样的:

    <Location />
       Order deny, allow
       allow from all
    </Location>
    <Location /adm>
        Order deny, allow
        deny from all
        allow from myniceip
    </Location>
    <Location /disabled>
        Order deny, allow
        deny from all
    </Location>

在 apache 2.4 中将是这样的:

   <Location />
       require all granted
    </Location>
   #Note that you dont need to use require all denied
   #to require only a group of ips.. 
    <Location /adm>
        require myniceip
    </Location>
    <Location /disabled>
        Require all denied
    </Location>

答案3

我认为您要找的是管理特定 IP 地址列表。对于他们,您只需编写:

Require ip 127.0.0.1
Require ip 127.0.0.2

每行包含您想要授予访问权限的 IP。更改您想要提供访问权限的 IP。您可以使用CIDR 表示法

相关内容