我想使用基本身份验证来限制对 Apache HTTPD 的所有文件(特定目录中的文件除外)的访问。
以下内容适用于为整个服务器设置基本身份验证:
<Directory />
AuthType Basic
AuthName "Private"
AuthUserFile /usr/local/apache/passwd/passwords
</Directory>
但是,我还想将目录限制/foo
到单个主机,无论基本身份验证如何:
<Directory /foo>
Order Deny,Allow
Deny from all
Allow from my-host.com
</Directory>
这两种设置单独使用时都可以正常工作,但我无法让它们组合起来工作:
- 默认情况下(或者如果我在子句
Satisfy all
中使用/foo
),用户需要来自正确的主机并拥有有效的凭据才能访问/foo
- 如果我
Satisfy any
在该/foo
子句中使用它,那么用户可以拥有有效的凭据,也可以来自正确的主机
但是我希望只有来自的人my-host.com
才能访问/foo
无需基本认证. 不应允许来自其他主机的连接即使有正确的凭证。事实上,这些连接甚至不应该被提示输入基本的身份验证凭证。
我错过了什么?
答案1
您能用 /foo 的空密码文件尝试一下吗?
<Directory /foo>
Order Deny,Allow
Deny from all
Allow from my-host.com
AuthType Basic
AuthName "my-host only"
AuthUserFile /usr/local/apache/passwd/empty
Satisfy any
</Directory>