我尝试使用 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
。