Wie man den Fehler "Nginx 403 error: directory index of folder is forbidden" behebt

Veröffentlicht 27. August 2024

Problem: Nginx 403 Fehler beim Zugriff auf ein Verzeichnis

Wenn Sie versuchen, auf ein Verzeichnis auf einem Webserver mit Nginx zuzugreifen, kann ein 403 Forbidden-Fehler auftreten. Dieser Fehler zeigt, dass der Server Ihre Anfrage versteht, sie aber nicht zulässt. Die Meldung "Verzeichnisindex des Ordners ist verboten" bedeutet, dass Nginx Versuche blockiert, den Inhalt eines bestimmten Verzeichnisses anzuzeigen. Dies verhindert den Zugriff auf Dateien oder das Durchsuchen der Ordnerstruktur.

Lösungen zur Behebung des Nginx 403 Fehlers

Konfiguration der Verzeichnisindizierung

Um die Verzeichnisindizierung in Nginx zu aktivieren, ändern Sie die Server-Konfigurationsdatei. Fügen Sie die Anweisung autoindex on; zum Location-Block hinzu. Dies ermöglicht Nginx, den Inhalt eines Verzeichnisses anzuzeigen, wenn keine Indexdatei vorhanden ist.

Setzen Sie die richtigen Berechtigungen für den Ordner, auf den Sie zugreifen möchten. Verwenden Sie den Befehl chmod, um dem Webserver-Benutzer Lese- und Ausführungsrechte zu geben:

chmod 755 /pfad/zu/ihrem/verzeichnis

Anpassen der Dateiberechtigungen

Überprüfen Sie den Besitz von Dateien und Verzeichnissen mit dem Befehl ls -l. Ändern Sie bei Bedarf den Besitz mit chown:

chown www-data:www-data /pfad/zu/ihrem/verzeichnis

Setzen Sie die korrekten Lese- und Ausführungsberechtigungen für Dateien und Verzeichnisse. Verwenden Sie chmod:

chmod 644 /pfad/zu/ihren/dateien
chmod 755 /pfad/zu/ihren/verzeichnissen

Aktualisieren der Nginx-Konfigurationseinstellungen

Ändern Sie den Location-Block in der Server-Konfigurationsdatei, um den Zugriff auf das Verzeichnis zu erlauben. Fügen Sie diese Anweisungen hinzu oder aktualisieren Sie sie:

location /ihr-verzeichnis {
    allow all;
}

Fügen Sie die index-Anweisung hinzu oder aktualisieren Sie sie, um festzulegen, welche Dateien Nginx als Indexdateien verwenden soll:

index index.html index.htm index.php;

Dies weist Nginx an, beim Zugriff auf ein Verzeichnis nach diesen Dateien in der angegebenen Reihenfolge zu suchen.

Überprüfen der Lösung

Nachdem Sie den Nginx 403 Forbidden-Fehler behoben haben, überprüfen Sie, ob die Lösung funktioniert. Folgen Sie diesen Schritten:

  1. Starten Sie den Nginx-Server neu, um Ihre Änderungen anzuwenden. Führen Sie diesen Befehl aus:
sudo systemctl restart nginx

Oder auf manchen Systemen:

sudo service nginx restart
  1. Testen Sie den Webseiten-Zugriff. Öffnen Sie einen Webbrowser und versuchen Sie, auf das Verzeichnis zuzugreifen, das den 403-Fehler anzeigte. Bei Erfolg sollten Sie den Verzeichnisinhalt oder die Indexdatei sehen, je nach Ihrer Konfiguration.

Wenn Sie immer noch Probleme haben, überprüfen Sie Ihre Konfigurationsdateien auf Fehler. Sie können auch die Nginx-Fehlerprotokolle auf weitere Informationen zu eventuellen Problemen überprüfen.

Alternative Ansätze zur Behebung des 403 Forbidden-Fehlers

Erstellen einer Indexdatei

Fügen Sie eine Indexdatei zum Verzeichnis hinzu, um den 403 Forbidden-Fehler zu beheben. Erstellen Sie eine index.html oder index.php Datei in dem Ordner, auf den Sie zugreifen möchten. Diese Datei wird angezeigt, wenn jemand versucht, den Verzeichnisinhalt anzusehen.

Damit Nginx diese Dateien verwendet, fügen Sie die index-Anweisung in Ihrem Server-Block hinzu oder aktualisieren Sie sie:

index index.html index.htm index.php;

Dies weist Nginx an, beim Zugriff auf ein Verzeichnis nach diesen Dateien zu suchen.

Verwendung der try_files-Anweisung

Die try_files-Anweisung in Nginx hilft bei der Verwaltung von Anfragen, wenn bestimmte Dateien nicht gefunden werden. Fügen Sie diese Anweisung zu Ihrem Location-Block hinzu:

location / {
    try_files $uri $uri/ /index.html;
}

Diese Konfiguration weist Nginx an:

  1. Nach der angeforderten URI zu suchen
  2. Nach einem Verzeichnis mit diesem Namen zu suchen
  3. Die index.html-Datei zu liefern, wenn keines von beiden existiert

Sie können Anfragen auch auf eine Standardseite umleiten, wenn keine passenden Dateien gefunden werden:

location / {
    try_files $uri $uri/ /default.html;
}

Dieser Ansatz hilft, 403-Fehler zu beheben, indem eine Ausweichoption bereitgestellt wird, wenn die angeforderte Ressource nicht verfügbar ist.

Fehlerbehebung bei anhaltenden 403-Fehlern

Wenn Sie die vorherigen Lösungen ausprobiert haben und immer noch einen 403 Forbidden-Fehler erhalten, versuchen Sie diese Schritte:

Überprüfen der SELinux-Einstellungen

Auf Systemen, die SELinux verwenden, können falsche Einstellungen 403-Fehler verursachen. Um zu überprüfen, ob SELinux aktiv ist, führen Sie aus:

getenforce

Wenn es "Enforcing" anzeigt, könnte SELinux den Zugriff blockieren. Um Nginx den Zugriff auf das Verzeichnis zu erlauben, verwenden Sie diesen Befehl:

chcon -Rt httpd_sys_content_t /pfad/zu/ihrem/verzeichnis

Um SELinux vorübergehend zum Testen zu deaktivieren, führen Sie aus:

sudo setenforce 0

Denken Sie daran, es nach dem Testen wieder zu aktivieren.

Überprüfen der Nginx-Benutzerberechtigungen

Überprüfen Sie, unter welchem Benutzer Nginx läuft, indem Sie in die Nginx-Konfigurationsdatei schauen (oft /etc/nginx/nginx.conf). Suchen Sie nach einer Zeile wie:

user nginx;

Stellen Sie sicher, dass dieser Benutzer die richtigen Berechtigungen hat, um auf Ihr Webverzeichnis zuzugreifen. Sie können den Besitz des Verzeichnisses auf den Nginx-Benutzer ändern:

chown -R nginx:nginx /pfad/zu/ihrem/verzeichnis

Wenn diese Schritte das Problem nicht lösen, überprüfen Sie Ihre Nginx-Fehlerprotokolle für weitere Details zum 403-Fehler. Die Protokolle befinden sich normalerweise in /var/log/nginx/error.log.