Apache 如何使目录只能从本地访问并使用有效用户进行身份验证

Apache 如何使目录只能从本地访问并使用有效用户进行身份验证

我尝试使用 require local 和 require valid-user 来执行此操作,但看起来 require local 会覆盖 valid-user。使本地访问不需要进行身份验证

AuthName "Authenticate"
AuthType Basic
AuthUserFile "/home/tmp/.htpassword"
Require local
Require valid-user

当我删除需要本地时,身份验证正在工作。但它允许从外部访问。那么如何配置它,以便我只能允许使用有效用户的本地访问

答案1

从 Apache 2.4 开始,你可以选择使用RequireAll分组指令:

<Directory /some/path>
    AuthName "Authenticate"
    AuthType Basic
    AuthUserFile "/home/tmp/.htpassword"
    <RequireAll>
       Require valid-user
       Require ip 192.168.1       
    </RequireAll>               
</Directory>

如果没有这个明确的RequireAll指令,Apache 会使用隐式RequireAny仅成功满足其中一个要求就足以获得访问权限。

在 Apache 2.2 中,您拥有的控制粒度较差,但可以使用Satisfy指令来指导 Apache 如何组合 Allow 和 Require 指令。

<Directory /some/path>
    AuthName "Authenticate"
    AuthType Basic
    AuthUserFile "/home/tmp/.htpassword"
    Require valid-user
    Order allow,deny
    Allow from 192.168.1       
    Satisfy All                
</Directory>

这需要经过身份验证的用户和您本地范围内的客户端 IP 地址:在此示例中192.168.1.0/24

相关内容