Apache: „AuthType not set!” Błąd 500

98

Minęło trochę czasu, odkąd korzystałem z serwera WWW Apache httpd. Odpalam lokalny serwer dla projektu i kiedy próbuję zażądać localhost / index.html, pojawia się błąd 500 i widzę to w dzienniku błędów:

[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

Wygląda na to, że w konfiguracji Apache prawdopodobnie są 2 błędy, jeden związany z „AuthType not set!” i prawdopodobnie inny związany z „filtrem nie został dodany: DEFLATE”. Nie wiem, co to oznacza ani od czego zacząć.

Podstawowe wyszukiwanie w Google ujawniło ten link, który wskazuje, że winowajcą może być „Żądaj wszystkich danych”. Ta linia w moim httpd.conf może być zaangażowana.

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

Ta konfiguracja Apache jest głównie używana w produkcji dla tego projektu, więc wiem, że to działa, ale obecnie nie na mojej stacji roboczej. Co to oznacza i co powinienem spróbować dalej? Próbowałem wykomentować „Wymagaj wszystkich danych” i zrestartować Apache, ale bezskutecznie.

Po tym pytaniu SO załadowałem również mod_authz_host

LoadModule authz_host_module modules/mod_authz_host.so

i dodano „Zezwól wszystkim”, zrestartowałem serwer. ale problem nadal występuje. Wydaje się, że problem deflacji nie jest powiązany i można go łatwo rozwiązać, dodając

LoadModule deflate_module modules/mod_deflate.so

Pozostaje pytanie, jak rozwiązać ten błąd 500?

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

Odpowiedzi:

183

Usuń linię, która mówi

Require all granted

jest potrzebny tylko na Apache> = 2.4

Stefan
źródło
1
Lub alternatywnie użyj składni <IfVersion> ... zobacz moją odpowiedź poniżej.
pkout
Świetna poprawka - znalezienie zajęło zbyt dużo czasu. Dzięki!
AlienWebguy
W OS X MAMP apache 2.2, zmień z „Wymagaj wszystkiego, co zostało przyznane” na Satisfy Any
Matilda Yi Pan
49

Problem tutaj można sformułować w inny sposób: jak zrobić konfigurację, która działa zarówno w Apache 2.2, jak i 2.4?

Require all grantedjest tylko w 2.4, ale Allow all ...przestaje działać w 2.4 i chcemy mieć możliwość wdrożenia konfiguracji, która działa w obu.

Jedyne rozwiązanie, które znalazłem, a nie jestem pewien, jest właściwe, to użycie:

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

# forward compatibility with apache 2.4
Require all granted
Satisfy Any

To powinno rozwiązać twój problem, a przynajmniej dla mnie. Teraz problem prawdopodobnie będzie znacznie trudniejszy do rozwiązania, jeśli masz bardziej złożone reguły dostępu ...

Zobacz także to dość podobne pytanie . Debian wiki zawiera również przydatne instrukcje dotyczące obsługi 2.2 i 2.4 .

anarcat
źródło
celowo dołączyłem te dwa fragmenty, aby działały w obu wersjach tutaj, proszę nie rozdzielać ich ponownie.
anarcat
1
Działał jak urok. Dzięki!
Anna Wellington
34

Alternatywnie, to rozwiązanie działa zarówno z Apache2 w wersji <2.4, jak i> = 2.4. Upewnij się, że moduł „wersja” jest włączony:

a2enmod version

Zamiast tego użyj tego kodu:

<IfVersion < 2.4>
    Allow from all
</IfVersion>
<IfVersion >= 2.4>
    Require all granted
</IfVersion>
pkout
źródło
Możesz również skorzystać z tej odpowiedzi, aby uniknąć aktywacji innego modułu: stackoverflow.com/questions/10707186/ ...
Stefan
3

Po prostu usuń / skomentuj następujący wiersz z pliku httpd.conf (etc / httpd / conf)

Wymagaj wszystkich przyznanych

Jest to potrzebne do Apache w wersji 2.2 i od tej pory nie jest wymagane.

CodedCoder
źródło
0

Myślę, że masz wersję 2.4.x Apache.

Czy jesteś pewien, że ładujesz te 2 moduły? - 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: Moje zalecenia dotyczące autoryzacji i praw to (domyślnie):

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
źródło
Dzięki Georgio, właściwie nie mam modułów auth {n | z} _core w katalogu modułów.
user3220334
Widzisz te moduły tak samo httpd -l?
Georgio,
Zastanawiam się, czy powinienem je budować osobno? To jest gotowa instalacja 2.2.15 na CentOS `apachectl -version Wersja serwera: Apache / 2.2.15 (Unix) Server zbudowany: 13 sierpnia 2013 17:29:28`
user3220334
Arf, przepraszam, używasz Apache 2.2.x, a nie 2.4.x. Moduły nie mają tej samej nazwy. Moduły to: mod_authn_file.c mod_authn_default mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_default mod_auth_basic
Georgio
Super, dzięki za listę, dodałem je wszystkie i zrestartowałem, ale nadal pojawia się błąd.
user3220334
0

Możesz spróbować, sudo a2enmod rewritejeśli używasz go w swoim config.

saian
źródło