Wie behebt man den Nginx 403 Forbidden Error beim Servieren von statischen Dateien?

Veröffentlicht 17. Oktober 2024

Problem: Nginx 403 Forbidden Error für statische Dateien

Der Nginx 403 Forbidden Error tritt auf, wenn versucht wird, statische Dateien bereitzustellen, und blockiert den Zugriff auf Website-Ressourcen. Dieses Problem kann die Funktion einer Website beeinträchtigen, da es Benutzer daran hindert, Bilder, Stylesheets oder andere statische Inhalte zu sehen.

Diagnose des Problems

Überprüfung der Nginx-Konfiguration

Um den Nginx 403 Forbidden Error zu beheben, überprüfen Sie Ihre Nginx-Konfiguration. Kontrollieren Sie den Location-Block für statische Dateien in Ihrer nginx.conf oder Server-Block-Datei. Dieser Block legt fest, wie Nginx Anfragen für statische Inhalte handhabt.

Beispiel eines Location-Blocks:

location /static {
    root /var/www/mysite;
    try_files $uri =404;
}

Stellen Sie sicher, dass die root- oder alias-Direktive korrekt eingestellt ist. Die root-Direktive legt das Basisverzeichnis für Anfragen fest, während die alias-Direktive einen anderen Pfad für den angegebenen Ort festlegt.

Tipp: Fehlerbehebung der Nginx-Konfiguration

Verwenden Sie den Befehl nginx -t, um Ihre Nginx-Konfiguration auf Syntaxfehler zu überprüfen. Dieser Befehl prüft die Konfigurationsdateien und meldet etwaige Probleme, was Ihnen hilft, Fehler schnell zu identifizieren und zu beheben.

Überprüfung der Datei- und Verzeichnisberechtigungen

Überprüfen Sie als Nächstes die Datei- und Verzeichnisberechtigungen Ihrer statischen Inhalte. Verwenden Sie den Befehl ls -l, um die Eigentümerschaft und Berechtigungen von Dateien und Verzeichnissen anzuzeigen.

Beispiel:

ls -l /var/www/mysite/static

Stellen Sie sicher, dass der Nginx-Benutzer (oft www-data oder nginx) Lesezugriff auf die Dateien und Ausführungsberechtigung für die Verzeichnisse hat. Die Ausführungsberechtigung für Verzeichnisse ermöglicht dem Benutzer den Zugriff auf den Inhalt des Verzeichnisses.

Um den Nginx-Benutzer zu finden, suchen Sie in Ihrer nginx.conf-Datei nach der user-Direktive oder verwenden Sie diesen Befehl:

ps aux | grep nginx

Wenn die Berechtigungen falsch sind, müssen Sie sie möglicherweise mit den Befehlen chmod und chown ändern.

Lösungen zur Behebung des 403 Forbidden Errors

Anpassung der Nginx-Benutzerkonfiguration

Um den 403 Forbidden Error zu beheben, müssen Sie möglicherweise die user-Direktive in Ihrer nginx.conf-Datei ändern. Diese Direktive legt fest, unter welchem Benutzer Nginx läuft, was den Zugriff auf Dateien und Verzeichnisse beeinflusst.

  1. Öffnen Sie Ihre nginx.conf-Datei (normalerweise in /etc/nginx/):
sudo nano /etc/nginx/nginx.conf
  1. Suchen Sie die user-Direktive nahe dem Anfang der Datei. Sie könnte so aussehen:
user www-data;
  1. Ändern Sie bei Bedarf den Benutzer so, dass er dem Eigentümer Ihrer statischen Dateien entspricht. Zum Beispiel:
user your_username;
  1. Speichern Sie die Datei und verlassen Sie den Editor.

  2. Starten Sie Nginx neu, um die Änderungen anzuwenden:

sudo systemctl restart nginx

Tipp: Nginx-Benutzer überprüfen

Um zu überprüfen, unter welchem Benutzer Nginx läuft, verwenden Sie den Befehl:

ps aux | grep nginx

Dies zeigt Ihnen die Prozesse, die Nginx ausführen, und den Benutzer, der mit jedem Prozess verbunden ist.

Korrektur der Datei- und Verzeichnisberechtigungen

Passen Sie die Eigentümerschaft und Berechtigungen Ihrer statischen Dateien an, um Nginx den Zugriff zu ermöglichen:

  1. Ändern Sie die Eigentümerschaft der statischen Dateien auf den Nginx-Benutzer:
sudo chown -R nginx:nginx /pfad/zu/ihren/statischen/dateien
  1. Setzen Sie Lese- und Ausführungsberechtigungen:
sudo chmod -R 755 /pfad/zu/ihren/statischen/dateien

Dieser Befehl gibt dem Eigentümer Lese- und Ausführungsberechtigungen und anderen nur Lesezugriff.

Aktualisierung des Nginx Location-Blocks

Überprüfen und korrigieren Sie die root- oder alias-Direktive in Ihrem Nginx Location-Block:

  1. Öffnen Sie Ihre Server-Block-Konfigurationsdatei:
sudo nano /etc/nginx/sites-available/ihre_website
  1. Suchen Sie den Location-Block für statische Dateien und überprüfen Sie die root- oder alias-Direktive:
location /static {
    root /var/www/ihre_website;
    # oder
    alias /pfad/zu/ihren/statischen/dateien;
}
  1. Stellen Sie sicher, dass der Pfad zu Ihren statischen Dateien korrekt ist.

  2. Speichern Sie die Datei und verlassen Sie den Editor.

  3. Testen Sie die Nginx-Konfiguration:

sudo nginx -t
  1. Wenn der Test erfolgreich ist, laden Sie Nginx neu:
sudo systemctl reload nginx