我刚刚将 Apache 从 2003 版升级到了干净整洁的全新 2.4.1 版。除了一件引人注目的事情外,一切似乎都很好:
在我的 httpd.conf 文件中,我有以下内容:
<Directory />
AllowOverride none
Options FollowSymLinks
AuthType Basic
AuthName "Enter Password"
AuthUserFile /var/www/.htpasswd
Require valid-user
</Directory>
Run Code Online (Sandbox Code Playgroud)
这应该只允许指定身份验证文件中的用户访问服务器 - 就像在旧版本的 Apache 下一样。(对?)
但是,它不起作用。在不提供身份验证的情况下授予请求。当我将日志记录切换到 LogLevel Debug 时,对于访问,它说:
[Sat Mar 24 21:32:00.585139 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of Require all granted: granted
[Sat Mar 24 21:32:00.585446 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of <RequireAny>: granted
Run Code Online (Sandbox Code Playgroud)
我真的不知道这意味着什么 - 我(据我所知)在我的任何文件中都没有任何“要求全部授予”或“”声明。
任何想法为什么这不起作用,或者在哪里调试?
更新:
我在 SSL 端口上有一个允许代理的虚拟主机。当我将相同的条目放入
<proxy *>
Run Code Online (Sandbox Code Playgroud)
virtualhost 配置中的子句,它有效。它似乎不适用于
<Directory>
Run Code Online (Sandbox Code Playgroud)
条款。然后我尝试放在其他目录子句(特定于其他目录)下,但这也不起作用。
还
从下面 Shane 的问题中 - 我尝试将根“/”块复制到“/tmp”目录。/tmp 目录正常工作!!所以 - 这个问题只针对根目录???
小智 15
我在全新 2.4 安装时遇到了类似的摘要式身份验证问题。仔细查看 Apache 站点上的文档,看起来身份验证指令需要在<Location>
标签中而不是在<Directory>
标签中。请参阅AuthBasicProvider 指令的文档。
小智 10
我遇到了同样的问题,这篇文章对我没有任何帮助,所以我要加 2 美分。在我的情况下(apache 2.4),问题出在顺序的Require指令中。
默认情况下,如果您有多个Require指令,它们将被视为<RequireAny>
在我的<Directory>
我有
Require ip 192.168.100.0/24 10.9.8.0/24
Require valid-user
Run Code Online (Sandbox Code Playgroud)
因此,如果 IP 正确,则不会出现身份验证请求。我不得不将Require逻辑从切换<RequireAny>
到<RequireAll>
,现在似乎一切正常。
<Directory /var/www>
DirectoryIndex index.html
Options -Indexes
AuthType Basic
AuthName "hidden data"
AuthBasicProvider file
AuthUserFile /opt/httpaswd
<RequireAll>
Require ip 192.168.100.0/24 10.9.8.0/24
Require valid-user
</RequireAll>
</Directory>
Run Code Online (Sandbox Code Playgroud)
小智 7
还要检查是否有意外的另一个
Require all granted
Run Code Online (Sandbox Code Playgroud)
同一目录配置中的其他位置。它可能会压倒你的
Require valid-user
Run Code Online (Sandbox Code Playgroud)
jscott 的回答是不正确的。Apache 2.4 肯定允许在容器中使用身份验证指令<Directory>
。此外,这是实现身份验证的唯一安全方式,因为<Location>
可以通过不同方式访问容器,如果您不小心,您的身份验证可能会被绕过。
作为参考,这是我在生产系统上使用的示例容器:
<Directory "/srv/http/my_domain.org/html/secret-stuff">
Options Indexes Multiviews FollowSymLinks
AuthType Digest
AuthName "staff"
AuthUserFile /etc/httpd/private/secret-stuff.htaccess
Require valid-user
</Directory>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65070 次 |
最近记录: |