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

Прошло некоторое время с тех пор, как я использовал веб-сервер 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

Ответ 1

Удалите строку, в которой говорится

Require all granted

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

Ответ 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

Это должно решить вашу проблему или, по крайней мере, для меня. Теперь проблема, вероятно, будет намного сложнее решить, если у вас более сложные правила доступа...

См. также этот довольно похожий вопрос. В Debian wiki также есть полезные инструкции для поддержки как 2.2, так и 2.4.

Ответ 3

В качестве альтернативы это решение работает как с версией Apache2, 2.4, а также >= 2.4. Убедитесь, что модуль "версия" включен:

a2enmod version

И затем используйте этот код:

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

Ответ 4

Я думаю, что у вас есть версия 2.4.x Apache.

Вы уверены, что загрузите эти 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

Ответ 5

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