Apache 将单个位置列入白名单,但其他所有位置都要求基本身份验证

Apache 将单个位置列入白名单,但其他所有位置都要求基本身份验证

我确信这很简单,但是今天早上谷歌不是我的朋友。

目标是:

/public... 是公开可访问的

其余所有内容(包括 /)都需要基本身份验证。

这是一个 WSGI 应用程序,带有一个 WSGI 脚本(如果有关系的话,它是一个 django 站点..)

我有这个:

<Location /public>
  Order deny,allow
  Allow from all
</Location>
<Directory />
  AuthType Basic
  AuthName "My Test Server"
  AuthUserFile /path/to/.htpasswd
  Require valid-user
</Directory>

使用此配置,基本身份验证可以正常工作,但该Location指令被完全忽略。我并不感到惊讶,因为根据(参见各部分如何合并),Directory首先处理该指令。

Directory我确信我遗漏了一些东西,但由于目录适用于文件系统位置,而我实际上只有一个/,并且Location我希望允许访问,但Directory总是覆盖Location...

编辑

我正在使用 Apache 2.2,它不支持AuthType None

答案1

对于 Apache 2.2(可能还有 2.3 之前的 2 系列中的其他版本):

<Location /public>
  Satisfy any
  Allow from all
</Location>
<Location />
  AuthType Basic
  AuthName "My Test Server"
  AuthUserFile /path/to/.htpasswd
  Require valid-user
</Location>

答案2

对于 Apache 2.0,AuthType None在您的节中设置<Location /public>

<Location /public>
  AuthType None
  Order deny,allow
  Allow from all
</Location>

http://httpd.apache.org/docs/trunk/mod/mod_authn_core.html#AuthType

相关内容