Hoe los je de 'Nginx 403 error: directory index of folder is forbidden' Fout op

Gepubliceerd 1 juli 2024

Probleem: Nginx 403 Fout Bij Toegang Tot Directory

Wanneer u probeert toegang te krijgen tot een directory op een webserver die Nginx draait, krijgt u mogelijk een 403 Forbidden fout te zien. Deze fout toont aan dat de server uw verzoek begrijpt maar het niet toestaat. Het bericht "directory index of folder is forbidden" betekent dat Nginx pogingen blokkeert om de inhoud van een specifieke directory te bekijken. Dit voorkomt dat u bestanden kunt openen of door de mappenstructuur kunt bladeren.

Oplossingen om de Nginx 403 Fout op te lossen

Directory Indexering Configureren

Om directory indexering in Nginx in te schakelen, wijzigt u het server configuratiebestand. Voeg de autoindex on; richtlijn toe aan het location blok. Dit laat Nginx de inhoud van een directory tonen wanneer er geen indexbestand aanwezig is.

Stel de juiste rechten in voor de map waartoe u toegang wilt hebben. Gebruik het chmod commando om lees- en uitvoerrechten te geven aan de webserver gebruiker:

chmod 755 /path/to/your/directory

Bestandsrechten Aanpassen

Controleer de eigendom van bestanden en directories met het ls -l commando. Wijzig indien nodig de eigendom met chown:

chown www-data:www-data /path/to/your/directory

Stel de juiste lees- en uitvoerrechten in voor bestanden en directories. Gebruik chmod:

chmod 644 /path/to/your/files
chmod 755 /path/to/your/directories

Nginx Configuratie-instellingen Bijwerken

Wijzig het location blok in het server configuratiebestand om toegang tot de directory toe te staan. Voeg deze richtlijnen toe of werk ze bij:

location /your-directory {
    allow all;
}

Voeg de index richtlijn toe of werk deze bij om te specificeren welke bestanden Nginx als indexbestanden moet gebruiken:

index index.html index.htm index.php;

Dit vertelt Nginx om op volgorde naar deze bestanden te zoeken bij het openen van een directory.

De Oplossing Verifiëren

Nadat u de Nginx 403 Forbidden fout heeft opgelost, controleert u of de oplossing werkt. Volg deze stappen:

  1. Herstart de Nginx server om uw wijzigingen toe te passen. Voer dit commando uit:
sudo systemctl restart nginx

Of op sommige systemen:

sudo service nginx restart
  1. Test de toegang tot de webpagina. Open een webbrowser en probeer toegang te krijgen tot de directory die de 403 fout toonde. Als het gelukt is, zou u de inhoud van de directory of het indexbestand moeten zien, afhankelijk van uw configuratie.

Als u nog steeds problemen heeft, controleer uw configuratiebestanden op fouten. U kunt ook de Nginx foutlogs bekijken voor meer informatie over eventuele problemen.

Alternatieve Benaderingen om de 403 Forbidden Fout op te lossen

Een Indexbestand Aanmaken

Voeg een indexbestand toe aan de directory om de 403 Forbidden fout op te lossen. Maak een index.html of index.php bestand aan in de map waartoe u toegang wilt hebben. Dit bestand wordt getoond wanneer iemand probeert de inhoud van de directory te bekijken.

Om Nginx deze bestanden te laten gebruiken, voegt u de index richtlijn toe aan of werkt u deze bij in uw server blok:

index index.html index.htm index.php;

Dit vertelt Nginx om naar deze bestanden te zoeken bij het openen van een directory.

De try_files Richtlijn Gebruiken

De try_files richtlijn in Nginx helpt bij het beheren van verzoeken wanneer specifieke bestanden niet worden gevonden. Voeg deze richtlijn toe aan uw location blok:

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

Deze configuratie vertelt Nginx om:

  1. Te zoeken naar de gevraagde URI
  2. Te controleren op een directory met die naam
  3. Het index.html bestand te serveren als geen van beide bestaat

U kunt verzoeken ook omleiden naar een standaardpagina als er geen overeenkomende bestanden worden gevonden:

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

Deze benadering helpt 403 fouten op te lossen door een terugvaloptie te bieden wanneer de gevraagde resource niet beschikbaar is.

Aanhoudende 403 Fouten Oplossen

Als u de vorige oplossingen heeft geprobeerd en nog steeds een 403 Forbidden fout krijgt, probeer dan deze stappen:

SELinux instellingen controleren

Op systemen die SELinux gebruiken, kunnen onjuiste instellingen 403 fouten veroorzaken. Om te controleren of SELinux actief is, voer uit:

getenforce

Als het "Enforcing" toont, kan SELinux de toegang blokkeren. Om Nginx toegang tot de directory te geven, gebruikt u dit commando:

chcon -Rt httpd_sys_content_t /path/to/your/directory

Om SELinux tijdelijk uit te schakelen voor testen, voer uit:

sudo setenforce 0

Vergeet niet om het na het testen weer in te schakelen.

Nginx gebruikersrechten verifiëren

Controleer onder welke gebruiker Nginx draait door te kijken in het Nginx configuratiebestand (vaak /etc/nginx/nginx.conf). Zoek naar een regel zoals:

user nginx;

Zorg ervoor dat deze gebruiker de juiste rechten heeft om toegang te krijgen tot uw webdirectory. U kunt de eigendom van de directory wijzigen naar de Nginx gebruiker:

chown -R nginx:nginx /path/to/your/directory

Als deze stappen het probleem niet oplossen, bekijk dan uw Nginx foutlogs voor meer details over de 403 fout. De logs bevinden zich meestal in /var/log/nginx/error.log.