Hoe Los Je De Nginx 403 Forbidden Fout Op Bij Het Serveren Van Statische Bestanden?

Gepubliceerd 9 september 2024

Probleem: Nginx 403 Forbidden Fout Voor Statische Bestanden

De Nginx 403 Forbidden fout treedt op bij het proberen statische bestanden te serveren, waardoor de toegang tot website resources wordt geblokkeerd. Dit probleem kan de functie van een website beïnvloeden, omdat het gebruikers verhindert afbeeldingen, stylesheets of andere statische content te zien.

Het Probleem Diagnosticeren

Nginx configuratie controleren

Om de Nginx 403 Forbidden fout op te lossen, bekijk uw Nginx configuratie. Controleer het location blok voor statische bestanden in uw nginx.conf of server block bestand. Dit blok bepaalt hoe Nginx verzoeken voor statische content verwerkt.

Voorbeeld van een location blok:

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

Controleer of de root of alias directive correct is ingesteld. De root directive stelt de basismap in voor verzoeken, terwijl de alias directive een ander pad instelt voor de gespecificeerde locatie.

Tip: Nginx Configuratie Problemen Oplossen

Gebruik het nginx -t commando om uw Nginx configuratie te testen op syntaxfouten. Dit commando controleert de configuratiebestanden en rapporteert eventuele problemen, waardoor u snel problemen kunt identificeren en oplossen.

Bestands- en mapmachtigingen onderzoeken

Controleer vervolgens de bestands- en mapmachtigingen van uw statische content. Gebruik het ls -l commando om het eigendom en de machtigingen van bestanden en mappen te zien.

Voorbeeld:

ls -l /var/www/mysite/static

Bevestig dat de Nginx gebruiker (vaak www-data of nginx) leestoegang heeft tot de bestanden en uitvoeringsrechten voor de mappen. De uitvoeringsrechten op mappen stellen de gebruiker in staat om toegang te krijgen tot de inhoud van de map.

Om de Nginx gebruiker te vinden, kijk in uw nginx.conf bestand naar de user directive of gebruik dit commando:

ps aux | grep nginx

Als de machtigingen verkeerd zijn, moet u ze mogelijk wijzigen met behulp van de chmod en chown commando's.

Oplossingen Om De 403 Forbidden Fout Op Te Lossen

Nginx gebruikersconfiguratie aanpassen

Om de 403 Forbidden fout op te lossen, moet u mogelijk de user directive in uw nginx.conf bestand wijzigen. Deze directive bepaalt onder welke gebruiker Nginx draait, wat invloed heeft op de toegang tot bestanden en mappen.

  1. Open uw nginx.conf bestand (meestal in /etc/nginx/):
sudo nano /etc/nginx/nginx.conf
  1. Zoek de user directive bovenaan het bestand. Het kan er zo uitzien:
user www-data;
  1. Wijzig indien nodig de gebruiker zodat deze overeenkomt met de eigenaar van uw statische bestanden. Bijvoorbeeld:
user your_username;
  1. Sla het bestand op en sluit de editor.

  2. Herstart Nginx om de wijzigingen toe te passen:

sudo systemctl restart nginx

Tip: Nginx Gebruiker Verifiëren

Om te controleren onder welke gebruiker Nginx draait, gebruik het commando:

ps aux | grep nginx

Dit toont u de processen die Nginx draaien en de gebruiker die is gekoppeld aan elk proces.

Bestands- en mapmachtigingen corrigeren

Pas het eigendom en de machtigingen van uw statische bestanden aan om Nginx toegang te geven:

  1. Wijzig het eigendom van statische bestanden naar de Nginx gebruiker:
sudo chown -R nginx:nginx /path/to/your/static/files
  1. Stel lees- en uitvoeringsrechten in:
sudo chmod -R 755 /path/to/your/static/files

Dit commando geeft lees- en uitvoeringsrechten aan de eigenaar, en alleen-lezen toegang aan anderen.

Nginx location blok bijwerken

Bekijk en corrigeer de root of alias directive in uw Nginx location blok:

  1. Open uw server block configuratiebestand:
sudo nano /etc/nginx/sites-available/your_site
  1. Zoek het location blok voor statische bestanden en controleer de root of alias directive:
location /static {
    root /var/www/your_site;
    # of
    alias /path/to/your/static/files;
}
  1. Zorg ervoor dat het pad naar uw statische bestanden correct is.

  2. Sla het bestand op en sluit de editor.

  3. Test de Nginx configuratie:

sudo nginx -t
  1. Als de test succesvol is, herlaad Nginx:
sudo systemctl reload nginx