PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Oplossing voor 502 Bad Gateway en 504 Gateway Timeout-fout op Linux Server

Yazdır

Oplossing voor 502 Bad Gateway en 504 Gateway Timeout-fout op Linux Server

Een stapsgewijze handleiding voor het oplossen van Nginx-, Apache-, PHP-FPM- en servicetime-outproblemen.

gezien op websites 502 Slechte gateway en 504 Gateway-time-out fouten treden meestal op omdat de webserver niet het juiste antwoord krijgt van de back-endservice. Deze service kan PHP-FPM, Apache backend, Node.js-applicatie, gamepanel-API-service of een andere applicatie achter de proxy zijn.

Deze fouten komen vooral veel voor bij hosting, gamepaneel, WHMCS, Pterodactyl, aangepast beheerpaneel en webgebaseerde opstartsystemen.

Eenvoudige uitleg: Nginx is als de bediende aan de deur. Als de PHP of applicatie daarin niet reageert, wordt er een 502- of 504-fout weergegeven voor de gebruiker.

1. Verschil tussen 502- en 504-fout

  • 502 Slechte gateway: De webserver kan geen verbinding maken met de backend-service of ontvangt een onleesbaar antwoord.
  • 504 Gateway-time-out: De backend-service lijkt te reageren, maar het antwoord wordt niet op tijd geretourneerd.

502 is dus meer een verbindings-/servicecrash, en 504 is een traagheids- of time-outprobleem.

2. Servicestatussen controleren

Controleer eerst of de webserver en PHP-services actief zijn.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

Op CentOS-, AlmaLinux- of Rocky Linux-systemen kan de PHP-FPM-service de volgende naam hebben:

systemctl status php-fpm
systemctl status httpd

Als de service is gestopt, start u deze opnieuw:

systemctl restart nginx
systemctl restart php-fpm

3. Logbestanden bekijken

Het is niet juist om door te gaan met giswerk voor 502- en 504-fouten. Het logbestand toont de werkelijke oorzaak van de fout.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

Op CentOS-gebaseerde systemen:

tail -n 100 /var/log/httpd/error_log

In de logboeken zijn de volgende uitspraken te zien:

  • connect() mislukt: Kan geen verbinding maken met de backend-service.
  • upstream time-out: Backend-service reageert laat.
  • verbinding geweigerd: De service is uitgevallen of er wordt doorgestuurd naar de verkeerde poort.
  • toestemming geweigerd: Er is een probleem met de socket- of bestandsrechten.

4. PHP-FPM-socket- of poortcontrole

Nginx maakt verbinding met PHP-FPM via socket of poort. Het PHP-FPM-pad in het Nginx-configuratiebestand en de werkelijke PHP-FPM-luisterwaarde moeten hetzelfde zijn.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

Als Nginx bijvoorbeeld gebruikt:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Aan de PHP-FPM-kant moet naar dezelfde socket worden geluisterd:

listen = /run/php/php8.2-fpm.sock
Belangrijk: Als de PHP-versie is gewijzigd, kijkt Nginx mogelijk nog steeds naar het oude PHP-FPM-socketpad. Dit is een van de meest voorkomende oorzaken van 502-fouten.

5. Time-outinstellingen verhogen

504-fouten kunnen worden ontvangen in grote verwerkingspanelen, speelmarkten, API's of langzaam werkende PHP-scripts. Nginx-time-outwaarden kunnen worden verhoogd.

nano /etc/nginx/nginx.conf

Aan het http-blok of het betreffende serverblok kunnen de volgende waarden worden toegevoegd:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

Test de instellingen en start Nginx opnieuw:

nginx -t
systemctl restart nginx

6. PHP-FPM-proceslimieten controleren

Wanneer het verkeer toeneemt, zijn de PHP-FPM-transactielimieten mogelijk onvoldoende. In dit geval worden aanvragen in de wachtrij geplaatst en treedt er een time-out op.

nano /etc/php/8.2/fpm/pool.d/www.conf

Voorbeeld instellingen:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

Deze waarden moeten worden aangepast aan de hoeveelheid RAM van de server. Als u een te hoge waarde instelt, neemt het RAM-verbruik toe.

Veelvoorkomende fouten

  • Instellingen wijzigen zonder naar het logbestand te kijken
  • Het Nginx-socketpad wordt niet bijgewerkt, ook al is de PHP-versie gewijzigd
  • De daadwerkelijke langzame vraag wordt niet opgelost door de time-out te verlengen
  • PHP-FPM-limieten verhogen zonder RAM te berekenen
  • De service opnieuw starten zonder de Nginx-configuratie te testen

Veelgestelde vragen

Wordt de 502-fout altijd veroorzaakt door Nginx?
Nee. Nginx is degene die de fout vertoont. Het echte probleem kan zich in PHP-FPM, Apache backend, Node.js-applicatie of een andere service bevinden.

Is het verhogen van de time-out de definitieve oplossing voor 504-fouten?
Niet altijd. Het verlengen van de time-out biedt tijdelijke verlichting. De echte oplossing is het vinden van het trage query-, zware verwerkings- of prestatieprobleem.

Is het veilig om PHP-FPM opnieuw te starten?
Het is over het algemeen veilig, maar actieve verzoeken kunnen voor korte tijd worden beïnvloed. In drukke systemen verdienen uren met weinig verkeer de voorkeur.

Prestatieaanbevelingen

  • Controleer regelmatig de PHP-FPM-versie en het socketpad.
  • Onderzoek langzame querylogboeken in het webpaneel en API-services.
  • Als het RAM-geheugen onvoldoende is, verhoog dan niet onbewust de waarde PHP-FPM max_children.
  • Verminder de backend-belasting door een cachesysteem te gebruiken.
  • Beheer foutenlogboeken voordat ze groeien met logrotate.

Dit artikel is speciaal opgesteld voor PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner