Apache:根用户的基本身份验证、目录上的主机限制

Apache:根用户的基本身份验证、目录上的主机限制

我想使用基本身份验证来限制对 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>

相关内容