Apache:“未设置 AuthType!” 500 错误

Posted

技术标签:

【中文标题】Apache:“未设置 AuthType!” 500 错误【英文标题】:Apache: "AuthType not set!" 500 Error 【发布时间】:2014-02-11 11:08:02 【问题描述】:

我已经有一段时间没有使用 Apache httpd 网络服务器了。我正在为一个项目启动本地服务器,当我尝试请求 localhost/index.html 时,我收到一个 500 错误,我在错误日志中看到了这个:

[Tue Jan 21 09:23:58 2014] [crit] [client ::1] configuration error:  couldn't perform authentication. AuthType not set!: /index.html
[Tue Jan 21 09:23:58 2014] [error] an unknown filter was not added: DEFLATE
[Tue Jan 21 09:23:58 2014] [crit] [client ::1] configuration error:  couldn't perform authentication. AuthType not set!: /favicon.ico

看起来 apache 配置中可能存在 2 个错误,其中一个与“未设置 AuthType!”有关。并且可能与“未添加过滤器:DEFLATE”相关的另一个。我不知道这些意味着什么或从哪里开始挖掘。

基本的 Google 搜索显示 this link,这表明罪魁祸首可能是“要求全部批准”。我的 httpd.conf 中的这一行可能涉及到。

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

这个 apache 配置主要用于这个项目的生产,所以我知道这是可行的,只是目前不在我的工作站上。这是什么意思,接下来我应该尝试什么?我确实尝试注释掉“要求所有授予”并重新启动 apache 但无济于事。

在this SO question之后我还加载了mod_authz_host

LoadModule authz_host_module modules/mod_authz_host.so

并添加“全部允许”,重新启动服务器。但问题仍然存在。放气问题似乎无关紧要,通过添加

很容易解决
LoadModule deflate_module modules/mod_deflate.so

问题仍然存在,我该如何解决这个 500 错误?

[Tue Jan 21 09:44:20 2014] [crit] [client ::1] 
configuration error:  couldn't perform authentication. 
AuthType not set!: /index.html

【问题讨论】:

【参考方案1】:

只需从您的 httpd.conf 文件 (etc/httpd/conf) 中删除/注释以下行

要求全部授予

在 Apache 版本 2.2 之前需要此功能,此后不再需要。

【讨论】:

【参考方案2】:

这里的问题可以用另一种方式表述:如何制作一个在 apache 2.2 和 2.4 中都有效的配置?

Require all granted 仅在 2.4 中,但 Allow all ... 在 2.4 中停止工作,我们希望能够推出适用于两者的配置。

我发现的唯一解决方案是使用:

# backwards compatibility with apache 2.2
Order allow,deny
Allow from all

# forward compatibility with apache 2.4
Require all granted
Satisfy Any

这应该可以解决您的问题,或者至少为我解决了问题。现在如果你有更复杂的访问规则,这个问题可能会更难解决......

另见this fairly similar question。 Debian wiki 也有 useful instructions for supporting both 2.2 and 2.4。

【讨论】:

我故意加入这两个sn-ps,所以它们在这里两个版本都可以工作,请不要再分开它们。 工作就像一个魅力。谢谢!【参考方案3】:

或者,此解决方案适用于 Apache2 版本 = 2.4。确保启用“版本”模块:

a2enmod version

然后改用这段代码:

<IfVersion < 2.4>
    Allow from all
</IfVersion>
<IfVersion >= 2.4>
    Require all granted
</IfVersion>

【讨论】:

您也可以使用此答案以避免激活另一个模块:***.com/questions/10707186/…【参考方案4】:

如果你在配置中使用sudo a2enmod rewrite,你可以试试。

【讨论】:

【参考方案5】:

删除上面写着的那一行

Require all granted

仅在 Apache >=2.4 上需要

【讨论】:

或者使用 语法...请参阅下面的答案。 很好的修复 - 花了太长时间才找到。谢谢! 在 OS X MAMP apache 2.2 中,从“要求所有授予”更改为满足任何要求【参考方案6】:

我认为您有 Apache 的 2.4.x 版本。

您确定加载了这 2 个模块吗? - mod_authn_core - mod_authz_core

LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so

PS:我对授权和权利的建议是(默认情况下):

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so

【讨论】:

感谢 Georgio,实际上我的模块目录中没有 authn|z_core 模块。 你看到这些模块都和httpd -l一样吗? 我想知道,我应该单独构建它们吗?这是在 CentOS 上开箱即用的 2.2.15 安装 `apachectl -version 服务器版本:Apache/2.2.15 (Unix) 服务器构建时间:2013 年 8 月 13 日 17:29:28` Arf,抱歉,您使用的是 Apache 2.2.x 而不是 2.4.x。模块没有相同的名称。模块是: mod_authn_file.c mod_authn_default mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_default mod_auth_basic 酷,感谢您的列表,我添加了所有这些并重新启动,但仍然收到错误。

以上是关于Apache:“未设置 AuthType!” 500 错误的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP,Apache - 错误:Apache 意外关闭

XAMPP,Apache - 错误:Apache 意外关闭

Linux 下Tomcat单机多应用

Apache web server,MySQL与PHP在一个web网站架构中各扮演啥角色。(答好追加50)

Apache 尝试访问服务器上的“/”时出现 403 错误

0-java安全基础——搭建tomcat调试环境