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 上需要
【讨论】:
或者使用我认为您有 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 错误的主要内容,如果未能解决你的问题,请参考以下文章