Probleem: Nginx Permission Denied Fout
De "Stat() Failed (13: Permission Denied)" fout in Nginx treedt op wanneer de webserver niet de juiste rechten heeft om toegang te krijgen tot bestanden of mappen. Dit probleem kan voorkomen dat Nginx content levert of scripts uitvoert, wat kan leiden tot downtime van de website of problemen met hoe de site werkt.
De Permission Denied Fout Oplossen
Eigendom van bestanden en mappen aanpassen
Om de Permission Denied fout te verhelpen, pas het eigendom van bestanden en mappen aan. Gebruik het chown commando om de eigenaar van de bestanden en mappen te wijzigen naar de Nginx gebruiker, meestal www-data. Bijvoorbeeld:
sudo chown www-data:www-data /username/test/static
Om eigendomswijzigingen toe te passen op alle bestanden en submappen, voeg de -R optie toe:
sudo chown -R www-data:www-data /username/test/static
Tip: Verifieer eigendomswijzigingen
Controleer na het wijzigen van het eigendom met het 'ls -l' commando of de wijzigingen correct zijn toegepast:
ls -l /username/test/static
Dit toont de bestand- en maptoegangsrechten, eigenaar en groepsinformatie.
Maptoegangsrechten wijzigen
Wijzig de maptoegangsrechten met het chmod commando. Stel de juiste waarden in om Nginx toegang te geven tot de bestanden. Een veelgebruikte rechteninstelling is 755, wat lees-, schrijf- en uitvoerrechten geeft aan de eigenaar, en lees- en uitvoerrechten aan anderen:
sudo chmod 755 /username/test/static
Stel de juiste toegang in langs het hele mappad. Elke bovenliggende map moet tenminste uitvoerrechten hebben voor de Nginx gebruiker:
sudo chmod 755 /username
sudo chmod 755 /username/test
Nginx gebruiker toevoegen aan de vereiste groep
Als het wijzigen van eigendom en rechten niet werkt, voeg de Nginx gebruiker toe aan de benodigde groep. Gebruik het gpasswd commando om de www-data gebruiker toe te voegen aan de groep die eigenaar is van de map:
sudo gpasswd -a www-data username
Nadat je de Nginx gebruiker aan de groep hebt toegevoegd, werk de groepsrechten bij voor maptoegang:
sudo chmod g+x /username
sudo chmod g+x /username/test
sudo chmod g+x /username/test/static
Dit geeft de groep uitvoerrechten op elke map in het pad, waardoor Nginx toegang krijgt tot de bestanden.
De Oplossing Testen en Verifiëren
Nginx uitvoeren als de juiste gebruiker
Om te testen of Nginx toegang heeft tot de bestanden met de nieuwe rechten, voer een commando uit als de Nginx gebruiker. Gebruik sudo om te wisselen naar de www-data gebruiker en probeer toegang te krijgen tot de bestanden:
sudo -u www-data stat /username/test/static/index.html
Als dit commando zonder fouten wordt uitgevoerd, kan Nginx nu toegang krijgen tot de bestanden. Als je een "Permission denied" fout ziet, controleer dan de vorige stappen en zorg ervoor dat alle rechten correct zijn ingesteld.
Tip: Controleer Bestandseigendom
Om snel te controleren of het bestandseigendom correct is ingesteld, gebruik het ls -l commando:
ls -l /username/test/static/index.html
Dit toont de eigenaar en groep van het bestand. Zorg ervoor dat ze overeenkomen met de Nginx gebruiker (meestal www-data).
Nginx configuratie herladen
Herlaad na het wijzigen van rechten of eigendom de Nginx configuratie om de wijzigingen toe te passen:
sudo systemctl reload nginx
Dit commando herstart de Nginx service zonder actieve verbindingen te onderbreken.
Om te controleren of de fout is opgelost, bekijk de Nginx foutenlogboeken:
sudo tail -f /var/log/nginx/error.log
Als je de "Permission denied" fouten niet meer in het logboek ziet, is het probleem opgelost. Je Nginx server zou nu de statische bestanden uit de opgegeven map moeten leveren.





