Błąd 403 po aktualizacji do apache 2.4

34

Po aktualizacji z serwera Ubuntu 13.04 strony www nie będą się wyświetlać.

Błąd 403 Zabronione Nie masz uprawnień dostępu / na tym serwerze.

Zmieniłem zapisy kontroli dostępu z apache2.2 na apache2.4, ale to nie działało. Co jeszcze mogłem zrobić?

użytkownik205336
źródło

Odpowiedzi:

59

Stało się to, że zmieniła się składnia plików konfiguracyjnych w apache2.4.

Źródło: To samo przytrafiło mi się po aktualizacji do 13.10

pliki conf.d

Wszystkie istniejące pliki /etc/apache2/conf.dpowinny zostać przeniesione do /etc/apache2/conf-available.

Teraz działają w ten sam sposób sitesi modsdziałają. Po prostu umieść pliki conf w conf-availablefolderze i włącz ten, który chcesz a2enconf <config-file-name>.

Przykład:

Miałem plik, conf.d/httpd.confktóry miał dyrektywę ServerName.
Aby to zadziałało, musiałem przenieść go do conf-availablekatalogu i włączyć ręcznie.

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

pliki witryn

Wcześniej pliki /etc/apache2/sites-availablenie miały rozszerzenia. Na przykład /etc/apache2/sites-available/default. Teraz .confwymagane jest rozszerzenie.

Przykład:

Jeśli tak /etc/apache2/sites-available/some-site, w 13.04 możesz po prostu włączyć to za pomocą sudo a2ensite some-site. Teraz pojawi się komunikat o błędzie

BŁĄD: strona jakaś strona nie istnieje!

Aby to naprawić, dodaj a .confdo wszystkich plików konfiguracyjnych w sites-available. Możesz zrobić to samo w sites-enabledlub możesz usunąć wszystkie pliki i ponownie włączyć je ręcznie.
Zalecam wykonywanie ich ręcznie, ponieważ prawdopodobnie musisz naprawić każdy VHost (następny krok).

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

jeśli zdecydowałeś się zrobić to ręcznie:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

Dyrektywy hosta wirtualnego:

pozwalają / odmawiają kontra Wymagaj

Jeśli masz następujące rzeczy:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

Powinien stać się:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

Aby uzyskać więcej informacji, sprawdź na komentarzach przez DaveRandom na zasadzie odpowiedzi na przepełnienie stosu.

Mówiąc najprościej, jeśli uaktualniłeś do apache2.4 i zachowałeś starą httpd.confwersję apache2.2, dyrektywa zezwalająca powinna nadal działać poprawnie. Jeśli zaktualizowałeś swój httpd.conf(co sugerowałbym), otrzymasz 403 błędów, dopóki nie zmienisz dyrektyw Order/ Allow/ Denyna ich odpowiedniki Require.

Opcje katalogu

Jeśli miał opcje Directory pamiętać, że wszystkie one muszą być poprzedzany z +lub -czy żaden z nich w ogóle. Połączenie obu nie jest dozwolone:

Przykład:

Jest to dozwolone:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

Tak też jest (zauważ, że oba te przykłady nie robią tego samego, poprzedni wyłącza MultiViewsopcję, następny nie):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

To nie jest już dozwolone:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

Ostatnia opcja konfiguracji wyrzuci błąd składniowy, mówiąc:

Albo wszystkie opcje muszą zaczynać się od + lub -, albo żadna opcja nie może.

Uruchom ponownie apache

Gdy wszystko zostanie zrobione, musisz ponownie uruchomić serwer Apache, aby zmiany odniosły skutek:

 sudo apache2ctl restart

Szczegółową instrukcję aktualizacji z wersji 2.2 do 2.4 można znaleźć w oficjalnej dokumentacji.

Dan
źródło
1
W moim systemie nie ma httpd.confpliku ani conf.dkatalogu. Ale jest apache2.confplik. Próbowałem przenieść go do conf-availablekatalogu i po ponownym uruchomieniu apache2 wystąpił następujący błąd: apache2: Nie można otworzyć pliku konfiguracyjnego /etc/apache2/apache2.conf: Brak takiego pliku lub katalogu - Co może być przyczyną?
Amal Murali
@AmalMurali To httpd.confbył tylko przykład. Możliwe, że nie będziesz mieć żadnych plików konfiguracyjnych w conf.dkatalogu, w takim przypadku po prostu pomiń ten krok. Co do tego apache2.conf, nie należy go przenosić do conf-availablekatalogu. Jest to główny plik konfiguracyjny apache, a jego ścieżka powinna być /etc/apache2/apache2.conf i nie można go zmieniać.
Dan
1
Łał. Jest to praktycznie jedyny przejrzysty przegląd, jaki można znaleźć wszędzie. Dzięki.
Russ Bateman,
nie ma config.dlub sites availablefolder. zobacz wszystkie pliki konfiguracyjne tutaj: imgur.com/WczXp3v
diEcho
1
@EdwardBlack Może istnieć inny powód, jeśli nadal używasz domyślnego wirtualnego hosta, jak wyjaśniono w odpowiedziach na następujące pytanie: Apache virtualhosts już nie działa po aktualizacji do 13.10
Dan
0

Zakładam, że strony internetowe działają na twoim serwerze Ubuntu.

Sprawdź httpd.conf, aby upewnić się, że ustawienie DocumentRoot wskazuje właściwe miejsce.

Sprawdź, czy uprawnienia do pliku w folderze, do którego odwołuje się DocumentRoot, może odczytać użytkownik, na którym działa serwer WWW.

Sprawdź, czy masz odpowiedni plik index.html / index.htm itp. I czy serwer sieciowy nie próbuje zrobić listy katalogów.

Matt
źródło
0

Miałem podobne problemy.

Nie mogłem uruchomić apache 2.4, chyba że użyłem „Allow from All”, było to denerwujące, ponieważ chciałem zapewnić czystą przerwę od wersji <2.4. Po wielu próbach i błędach oraz wielu poszukiwaniach zauważyłem odniesienie do access_compat i zdałem sobie sprawę, że jest to tylko dla kompatybilności. Chociaż dokumentacja apache mówi, że można używać obu, zaleca się, aby nie używać.

Usunąłem ten moduł z pliku ładowania / etc / sysconfig / apache2, co natychmiast rozwiązało mój problem.

Pozdrawiam Liam

Liam O Donnell
źródło
-1

Udostępniam pliki z niestandardowego katalogu, więc aby aktualizacja działała, musiałem edytować /etc/apache2/apache2.conf i dodać: Opcje Indeksy FollowSymLinks Zezwalaj na brak Brak Wymagane wszystkie przyznane

Po tym i zalecanych zmianach powyżej błąd 403 zniknął.

kupy pupy
źródło