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


98

自从我使用Apache httpd Web服务器以来已经有一段时间了。我正在为项目启动本地服务器,当我尝试请求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的基本搜索显示了此链接该链接指示罪魁祸首可能是“需要全部授予”。我的httpd.conf中的这一行可能涉及到。

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

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

这个问题之后,我还加载了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

Answers:


183

删除显示以下内容的行

Require all granted

仅在Apache> = 2.4上才需要


1
或者使用<IfVersion>语法...请参阅下面的答案。
pkout 2014年

很好的解决方法-花了太长时间才找到。谢谢!
AlienWebguy 2015年

在OS X MAMP apache 2.2中,从“要求全部获得批准”更改为“满足任何要求
Matilda Yi Pan

49

这里的问题可以用另一种方式来表述:如何制作一个在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

这应该可以解决您的问题,或者至少可以解决我的问题。现在,如果您拥有更复杂的访问规则,则可能很难解决该问题。

另请参阅此相当类似的问题。Debian Wiki还提供了有关支持2.2和2.4的有用说明


我有意加入了两个代码段,因此它们在这两个版本中都可以使用,请不要再将它们分开。
anarcat

1
像魅力一样工作。谢谢!
安娜惠灵顿

34

另外,此解决方案可用于Apache2版本<2.4和> = 2.4。确保已启用“版本”模块:

a2enmod version

然后使用以下代码代替:

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

你也可以用这个答案去避免激活另一个模块:stackoverflow.com/questions/10707186/...
斯特凡

3

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

要求所有授予

在Apache 2.2版之前,这是必需的,此后不再需要。


0

我认为您拥有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,实际上我的模块目录中没有auth {n | z} _core模块。
user3220334 2014年

您看到这些模块都一样httpd -l吗?
Georgio 2014年

我想知道,我应该分开建造吗?这是CentOS`apachectl -version服务器版本上的即装即用2.2.15安装:Apache / 2.2.15(Unix)服务器内置:2013年8月13日17:29:28`
user3220334 2014年

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
Georgio 2014年

太酷了,感谢您的列表,我添加了所有列表并重新启动,但仍然收到错误消息。
user3220334 2014年

0

您可以尝试sudo a2enmod rewrite在配置中使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.