![Apache 将单个位置列入白名单,但其他所有位置都要求基本身份验证](https://linux22.com/image/540684/Apache%20%E5%B0%86%E5%8D%95%E4%B8%AA%E4%BD%8D%E7%BD%AE%E5%88%97%E5%85%A5%E7%99%BD%E5%90%8D%E5%8D%95%EF%BC%8C%E4%BD%86%E5%85%B6%E4%BB%96%E6%89%80%E6%9C%89%E4%BD%8D%E7%BD%AE%E9%83%BD%E8%A6%81%E6%B1%82%E5%9F%BA%E6%9C%AC%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
我确信这很简单,但是今天早上谷歌不是我的朋友。
目标是:
/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