✦ Oplossingen · Website & hosting

502 Bad Gateway, 503 Service Unavailable of 504 Gateway Timeout

Je website geeft een 502 Bad Gateway, 503 Service Unavailable of 504 Gateway Timeout? Zo lees je het verschil, vind je de oorzaak in de logs en los je het op.

Waarom gebeurt dit?

Deze drie fouten komen van de webserver of proxy vóór je applicatie, niet van PHP zelf. 502 Bad Gateway: de webserver kreeg een ongeldig of geen antwoord van PHP-FPM of een andere achterliggende dienst, bijvoorbeeld omdat die is gestopt of vastliep. 503 Service Unavailable: de dienst is tijdelijk niet beschikbaar, bijvoorbeeld door onderhoud, overbelasting of een limiet. 504 Gateway Timeout: de achterliggende dienst antwoordde niet op tijd.

Zit er een CDN of proxy voor je site, dan kan de fout ook dáár ontstaan. Kijk op de foutpagina van wie hij komt.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Stel vast wie de fout geeft

    Staat er een naam van een CDN of proxy op de foutpagina, of komt hij van je eigen server? Een korte controle met curl laat de statuscode en server-header zien.

    curl -sI https://www.voorbeeld.nl/ | head -n 5
  2. Lees het foutenlog van de webserver

    Bij een 502 staat er vaak 'connect() failed' of 'upstream prematurely closed connection'; bij een 504 'upstream timed out'.

    sudo tail -n 50 /var/log/nginx/error.log
  3. Controleer of PHP-FPM draait

    Bij een 502 is PHP-FPM vaak gestopt, of het socketpad in de nginx-configuratie klopt niet.

    sudo systemctl status php8.3-fpm
    ls -l /run/php/
  4. Kijk of alle PHP-processen bezet zijn

    Staat in het PHP-FPM-log 'server reached pm.max_children', dan zijn alle processen bezig. Zoek de trage pagina's (vaak een trage query of externe aanroep) en verhoog pm.max_children alleen als het geheugen het toelaat.

    sudo grep -i max_children /var/log/php8.3-fpm.log
  5. Stem timeouts op elkaar af bij 504

    Duurt een taak terecht lang, laat dan PHP en webserver even lang wachten (zie max execution time). Beter: zet zo'n taak in een cronjob of wachtrij.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

De fout gaat na een paar minuten vanzelf weg.

Dat wijst op een piek: te veel bezoekers of bots tegelijk, of een zware taak. Bekijk in de toegangslog wat er op dat moment binnenkwam.

Is een 503 slecht voor Google?

Kort is het geen probleem; Google probeert het later opnieuw. Een 503 is zelfs de juiste code tijdens gepland onderhoud. Langdurige fouten kunnen wel gevolgen hebben.

Wat is het verschil met een 500-fout?

Een 500 komt meestal van de applicatie zelf (een PHP-fout). 502/503/504 gaan over de verbinding tussen webserver en achterliggende dienst.