Hoe los je de '(13: Permission denied) while connecting to upstream' Nginx Foutmelding op

Gepubliceerd 29 juni 2024

Probleem: Nginx '(13: Permission denied)' Fout

Wanneer u Nginx gebruikt als een webserver of reverse proxy, kunt u de foutmelding "(13: Permission denied) while connecting to upstream" zien. Deze fout gebeurt vaak wanneer Nginx niet de juiste rechten heeft om toegang te krijgen tot of te communiceren met de upstream server. Het kan de functionaliteit van uw website beïnvloeden en voorkomen dat content gebruikers bereikt.

6 Oplossingen Om Het Nginx Permission Denied Probleem Op Te Lossen

1. Controleer Nginx Gebruikersrechten

Om de Nginx permission denied fout op te lossen, controleer de Nginx gebruikersrechten. Kijk in het Nginx.conf bestand naar de gebruikers- en groepsinstellingen. Zorg ervoor dat de Nginx gebruiker toegang heeft tot de bestanden en mappen. Mogelijk moet u de bestands- en maprechten wijzigen met het chmod commando.

2. Onderzoek SELinux Instellingen

SELinux kan Nginx blokkeren bij het openen van bestanden of het maken van netwerkverbindingen. Controleer de SELinux status en wijzig de boolean waarden indien nodig. Gebruik het 'setsebool' commando om deze instellingen te wijzigen. U kunt de SELinux boolean waarde voor httpd network connect wijzigen met:

setsebool httpd_can_network_connect on -p

3. Bekijk Nginx Configuratiebestanden

Controleer uw Nginx.conf bestand op fouten. Kijk naar de upstream server instellingen. Zorg ervoor dat alle paden en serveradressen correct zijn en dat Nginx toegang heeft tot deze bronnen.

4. Analyseer Nginx Foutlogs

Nginx foutlogs kunnen u helpen het permission denied probleem te vinden. Bekijk de foutlogs, meestal in /var/log/nginx/error.log, voor permission denied meldingen. Gebruik het grep commando om deze fouten te vinden:

grep denied /var/log/nginx/error.log

5. Onderzoek Firewall Regels

Uw firewall blokkeert mogelijk Nginx verbindingen. Controleer uw firewall regels en zorg ervoor dat ze Nginx toestaan om verbinding te maken met de benodigde poorten en IP adressen. Mogelijk moet u nieuwe regels toevoegen of bestaande wijzigen om Nginx de juiste toegang te geven.

6. Verifieer Upstream Server Beschikbaarheid

Controleer of uw upstream servers draaien en bereikbaar zijn. Probeer verbinding te maken met deze servers vanaf uw Nginx server om netwerk- of configuratieproblemen uit te sluiten. U kunt telnet of curl gebruiken om deze verbindingen te testen en ervoor te zorgen dat de upstream servers reageren.

Als u nog steeds problemen heeft, ziet u mogelijk een 502 Bad Gateway fout bij verbinding met upstream. Controleer in dit geval uw applicatieserver en zorg ervoor dat deze draait en correct geconfigureerd is.

Onthoud, als u SELinux instellingen wijzigt, moet u mogelijk het volgende uitvoeren:

audit2allow -m mynginx
sudo semodule -i mynginx.pp

Dit creëert en installeert een aangepaste beleidsmodule gebaseerd op de audit logs.

Aanvullende Probleemoplossing Stappen voor Nginx Permission Denied Fouten

audit2allow Gebruiken Om SELinux Beleidsregels Te Genereren

De audit2allow tool helpt SELinux beleidsregels te creëren wanneer standaard beleidsregels niet werken. Om het te gebruiken:

  1. Controleer SELinux logs voor geweigerde acties:

    grep "denied" /var/log/audit/audit.log
  2. Gebruik audit2allow om een beleidsregel te genereren:

    audit2allow -m mynginx sudo semodule
  3. Pas de nieuwe beleidsregel toe:

    mynginx sudo semodule -i mynginx.pp

Dit proces creëert en installeert een SELinux module gebaseerd op recente geweigerde acties.

Bestandseigendom en Rechten Aanpassen

Correct bestandseigendom en rechten helpen Nginx rechtenproblemen op te lossen:

  1. Stel eigendom van Nginx bestanden en mappen in:

    chown -R nginx:nginx /var/www/html
  2. Stel rechten in:

    chmod 755 /var/www/html
    chmod 644 /var/www/html/*

Deze commando's geven de Nginx gebruiker en groep eigendom van webbestanden en stellen lees-, schrijf- en uitvoerrechten in. Wijzig paden naar behoefte voor uw setup.