Filter nginx-fouten op statuscode of een aanwijzing uit het log en krijg de waarschijnlijke oorzaak plus de configwijziging die het oplost. Voor 502, 504, 403, 404 en 413.
Nginx geeft 502 Bad Gateway terug als het als proxy werkt en de app erachter geen geldig antwoord geeft: de app draait niet, luistert op een andere poort of socket, of crashte halverwege het antwoord. Start de app, laat proxy_pass wijzen naar het adres waarop hij echt luistert en lees daarna het foutlog van nginx voor de precieze reden.
Waar elke nginx-fout naar wijst
Kies de statuscode die u ziet, of typ een woord uit uw foutlog, en de zoeker beperkt de lijst tot de passende oorzaken. Elke kaart noemt de oorzaak, de controle die haar bevestigt en een configfragment dat u kunt aanpassen. Tot u filtert, worden alle kaarten getoond.
Als bezoeker veroorzaakt u hem niet. De proxy probeerde de applicatie erachter te bereiken en kreeg geen geldig antwoord. Als eigenaar van de site ligt het aan uw app of uw proxyinstellingen, dus controleer eerst of het upstream-proces draait.
Een 502 betekent dat de upstream slecht antwoordde of de verbinding weigerde. Een 504 betekent dat nginx wachtte en er op tijd niets binnenkwam. De eerste wijst op een gestopte of crashende app, de tweede op traag werk of een te lage timeout.
Zet client_max_body_size in het http-, server- of location-blok, bijvoorbeeld client_max_body_size 20m;. De standaard is 1m. Een waarde van 0 zet de groottecontrole uit, wat op een publieke site zelden is wat u wilt.
Als de URL op een slash eindigt, zoekt nginx naar een indexbestand zoals index.html. Bestaat dat niet en staat autoindex uit, wat de standaard is, dan is er niets wat het mag serveren. Voeg het indexbestand toe of routeer het verzoek met try_files.
De locatie wordt bepaald door de error_log-directive in uw config. Zoek in uw nginx.conf en de ingesloten bestanden naar error_log, want pakketten en containers zetten het op verschillende plekken.
Een beginpunt voor een app op poort 3000. Het geeft de oorspronkelijke host en het schema door, stelt expliciete timeouts in en laat ruimte voor grotere headers.
Test met nginx -t en herlaad daarna. Pas de poort en de limieten aan uw app aan.
De app achter nginx draait niet, dus de verbinding wordt geweigerd.
Curl het proxy_pass-adres vanaf de nginx-machine. Een geweigerde verbinding bevestigt het.
Start de app onder een procesmanager die hem na een crash opnieuw start.
proxy_pass wijst naar een poort of socket waarop de app niet luistert.
Vergelijk het adres in proxy_pass met het adres dat de app bij het starten toont.
Laat de twee exact overeenkomen, inclusief het hostdeel.
De app stuurt response-headers die groter zijn dan de buffer waarin nginx ze leest, bijvoorbeeld door veel cookies.
Zoek naar een logregel die vermeldt dat de header te groot is.
Verhoog proxy_buffer_size voor die location. De standaard is één geheugenpagina, 4k of 8k.
De app deed tussen twee leesacties langer dan proxy_read_timeout, standaard 60 seconden.
Meet hoe lang hetzelfde verzoek direct tegen de app duurt met curl.
Maak de endpoint sneller of verplaats het werk naar een achtergrondtaak. Verhoog de timeout alleen voor die location.
Nginx kon niet eens een verbinding openen binnen proxy_connect_timeout, standaard 60 seconden.
Controleer op een firewall of een host die vanaf de proxy onbereikbaar is.
Herstel het netwerkpad. Volgens de nginx-documentatie kan deze timeout meestal niet hoger dan 75 seconden, dus verhogen helpt niet.
Een URL die op een slash eindigt heeft geen indexbestand en autoindex staat uit.
Bekijk de map waarnaar root wijst en zoek naar index.html.
Voeg het indexbestand toe, of stuur het verzoek met try_files naar uw app.
De worker-gebruiker van nginx kan het bestand niet lezen of een van de mappen erboven niet openen.
Zoek in het foutlog naar een permission denied-regel die het pad noemt.
Geef de worker-gebruiker leesrechten op de bestanden en uitvoerrechten op elke bovenliggende map.
Een allow- of deny-regel kwam overeen met de bezoeker. Regels worden op volgorde gecontroleerd en de eerste match wint.
Lees elke allow- en deny-regel die voor de location geldt, van boven naar beneden.
Zet de regels in een andere volgorde, zodat de specifieke allow vóór de brede deny all komt.
root werd gebruikt waar alias bedoeld was, dus nginx voegt het location-prefix twee keer aan het pad toe.
Reken het bestandspad uit: root plakt de hele URI erachter, alias vervangt het gematchte prefix.
Gebruik alias, met een afsluitende slash aan beide kanten, als de mapnaam afwijkt van de URL.
Een route van een single page app zoals /dashboard heeft geen bestand op schijf.
De homepage laadt, maar een refresh op een binnenliggende route mislukt.
Val terug op index.html met try_files, zodat de router van de app het pad afhandelt.
De body van het verzoek is groter dan client_max_body_size, standaard 1m.
Uploads onder een megabyte werken en grotere mislukken.
Verhoog de limiet alleen voor de upload-location.
Statuscode
Alle codes
Woorden uit uw foutlog
bijvoorbeeld: refused, timed out, denied
Controle
Oplossing
{n} passende oorzaken
Geen oorzaak past. Wis de zoekopdracht of kies een andere code.
Gratis beginnen · Geen creditcard nodig