Apache: «AuthType не установлен!» 500 Ошибка

98

Я давно не пользовался веб-сервером 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 есть две ошибки, одна из которых связана с "AuthType not set!" и, возможно, еще один, связанный с «фильтр не добавлен: DEFLATE». Я не знаю, что это значит и с чего начать.

Базовый поиск Google обнаружил эту ссылку, которая указывает на то, что виновником может быть «Требовать все разрешено». Эта строка в моем httpd.conf может быть задействована.

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

Эта конфигурация apache в основном используется в производстве для этого проекта, поэтому я знаю, что это работает, но сейчас не на моей рабочей станции. Что это значит и что мне попробовать дальше? Я попытался прокомментировать «Требовать все разрешено» и перезапустить apache, но безрезультатно.

После этого вопроса SO я также загрузил 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
user3220334
источник

Ответы:

183

Удалите строку с надписью

Require all granted

это нужно только на Apache> = 2.4

Стефан
источник
1
Или, в качестве альтернативы, используйте синтаксис <IfVersion> ... см. Мой ответ ниже.
pkout
Отличное исправление - слишком долго, чтобы найти. Спасибо!
AlienWebguy
В OS X MAMP apache 2.2 изменение с «Требовать все предоставлено» на «Удовлетворительно»
Матильда Йи Пан,
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 также есть полезные инструкции по поддержке версий 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>
pkout
источник
Вы также можете воспользоваться этим ответом, чтобы не активировать другой модуль: stackoverflow.com/questions/10707186/…
Стефан
3

Просто удалите / прокомментируйте следующую строку из файла httpd.conf (etc / httpd / conf)

Требовать все предоставлено

Это необходимо до версии Apache 2.2 и с этого момента не требуется.

CodedCoder
источник
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
Джорджио
источник
Спасибо Джорджио, на самом деле у меня нет модулей auth {n | z} _core в моем каталоге модулей.
user3220334
Вы все-таки видите эти модули с httpd -l?
Джорджио
Интересно, стоит ли создавать их отдельно? Это готовая установка 2.2.15 на CentOS `apachectl -version Версия сервера: Apache / 2.2.15 (Unix) Сервер построен: 13 августа 2013 г.
17:29
Арф, извините, вы используете 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
Джорджио
Круто, спасибо за список, я добавил их все и перезапустил, но все еще получаю ошибку.
user3220334
0

Вы можете попробовать, sudo a2enmod rewriteесли используете его в своей конфигурации.

Сайан
источник