Problem: Nginx Permission Denied Fehler
Der "Stat() Failed (13: Permission Denied)" Fehler in Nginx tritt auf, wenn der Webserver nicht die richtigen Berechtigungen hat, um auf Dateien oder Verzeichnisse zuzugreifen. Dieses Problem kann Nginx daran hindern, Inhalte zu servieren oder Skripte auszuführen, was zu Websiteausfällen oder Problemen mit der Funktionalität der Website führen kann.
Lösung des Permission Denied Fehlers
Anpassen der Datei- und Verzeichnisbesitzrechte
Um den Permission Denied Fehler zu beheben, passen Sie die Besitzrechte von Dateien und Verzeichnissen an. Verwenden Sie den chown-Befehl, um den Besitzer der Dateien und Verzeichnisse auf den Nginx-Benutzer zu ändern, normalerweise www-data. Zum Beispiel:
sudo chown www-data:www-data /username/test/static
Um Besitzrechtsänderungen auf alle Dateien und Unterverzeichnisse anzuwenden, fügen Sie die Option -R hinzu:
sudo chown -R www-data:www-data /username/test/static
Tipp: Überprüfen der Besitzrechtsänderungen
Nach der Änderung der Besitzrechte verwenden Sie den 'ls -l' Befehl, um zu überprüfen, ob die Änderungen korrekt angewendet wurden:
ls -l /username/test/static
Dies zeigt die Datei- und Verzeichnisberechtigungen sowie Besitzer- und Gruppeninformationen an.
Ändern der Verzeichnisberechtigungen
Ändern Sie die Verzeichnisberechtigungen mit dem chmod-Befehl. Setzen Sie die korrekten Werte, um Nginx den Zugriff auf die Dateien zu ermöglichen. Eine übliche Berechtigungseinstellung ist 755, die dem Besitzer Lese-, Schreib- und Ausführungsrechte und anderen Lese- und Ausführungsrechte gibt:
sudo chmod 755 /username/test/static
Setzen Sie die richtigen Zugriffsrechte entlang des gesamten Verzeichnispfads. Jedes übergeordnete Verzeichnis sollte mindestens Ausführungsrechte für den Nginx-Benutzer haben:
sudo chmod 755 /username
sudo chmod 755 /username/test
Hinzufügen des Nginx-Benutzers zur erforderlichen Gruppe
Wenn das Ändern der Besitzrechte und Berechtigungen nicht funktioniert, fügen Sie den Nginx-Benutzer zur notwendigen Gruppe hinzu. Verwenden Sie den gpasswd-Befehl, um den www-data-Benutzer zur Gruppe hinzuzufügen, die das Verzeichnis besitzt:
sudo gpasswd -a www-data username
Nachdem Sie den Nginx-Benutzer zur Gruppe hinzugefügt haben, aktualisieren Sie die Gruppenberechtigungen für den Verzeichniszugriff:
sudo chmod g+x /username
sudo chmod g+x /username/test
sudo chmod g+x /username/test/static
Dies gibt der Gruppe Ausführungsrechte für jedes Verzeichnis im Pfad und ermöglicht Nginx den Zugriff auf die Dateien.
Testen und Überprüfen der Lösung
Ausführen von Nginx als entsprechender Benutzer
Um zu testen, ob Nginx mit den neuen Berechtigungen auf die Dateien zugreifen kann, führen Sie einen Befehl als Nginx-Benutzer aus. Verwenden Sie sudo, um zum www-data-Benutzer zu wechseln und versuchen Sie, auf die Dateien zuzugreifen:
sudo -u www-data stat /username/test/static/index.html
Wenn dieser Befehl ohne Fehler ausgeführt wird, kann Nginx jetzt auf die Dateien zugreifen. Wenn Sie einen "Permission denied" Fehler sehen, überprüfen Sie die vorherigen Schritte und stellen Sie sicher, dass alle Berechtigungen korrekt gesetzt sind.
Tipp: Überprüfen der Dateibesitzrechte
Um schnell zu überprüfen, ob die Dateibesitzrechte korrekt gesetzt sind, verwenden Sie den ls -l
Befehl:
ls -l /username/test/static/index.html
Dies zeigt den Besitzer und die Gruppe der Datei an. Stellen Sie sicher, dass sie mit dem Nginx-Benutzer (normalerweise www-data) übereinstimmen.
Neuladen der Nginx-Konfiguration
Nach dem Ändern von Berechtigungen oder Besitzrechten laden Sie die Nginx-Konfiguration neu, um die Änderungen anzuwenden:
sudo systemctl reload nginx
Dieser Befehl startet den Nginx-Dienst neu, ohne aktive Verbindungen zu unterbrechen.
Um zu überprüfen, ob der Fehler behoben ist, sehen Sie sich die Nginx-Fehlerprotokolle an:
sudo tail -f /var/log/nginx/error.log
Wenn Sie die "Permission denied" Fehler nicht mehr im Protokoll sehen, ist das Problem gelöst. Ihr Nginx-Server sollte nun die statischen Dateien aus dem angegebenen Verzeichnis servieren können.