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

Solució a l'error 502 Bad Gateway i 504 Gateway Timeout al servidor Linux

Yazdır

Solució a l'error 502 Bad Gateway i 504 Gateway Timeout al servidor Linux

Una guia pas a pas per resoldre problemes amb Nginx, Apache, PHP-FPM i el temps d'espera del servei.

vist als llocs web 502 Bad Gateway i 504 Temps d'espera de la passarel·la Els errors solen produir-se perquè el servidor web no rep la resposta correcta del servei de fons. Aquest servei pot ser PHP-FPM, el backend d'Apache, l'aplicació Node.js, el servei d'API del panell de jocs o una altra aplicació darrere del proxy.

Aquests errors són especialment comuns a l'allotjament, el panell de jocs, WHMCS, Pterodactyl, el panell d'administració personalitzat i els sistemes de llançament basats en web.

Explicació senzilla: Nginx és com l'assistent a la porta. Si el PHP o l'aplicació que hi ha dins no respon, mostrarà un error 502 o 504 a l'usuari.

1. Diferència entre l'error 502 i 504

  • 502 Bad Gateway: El servidor web no es pot connectar al servei de fons o rep una resposta confusa.
  • Temps d'espera de la passarel·la 504: Sembla que el servei de backend està responent, però la resposta no es retorna a temps.

Per tant, 502 és més un error de connexió/servei i 504 és un problema de lentitud o temps d'espera.

2. Comprovació dels estats del servei

Primer, comproveu si el servidor web i els serveis PHP s'estan executant.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

Als sistemes CentOS, AlmaLinux o Rocky Linux, el servei PHP-FPM es pot anomenar:

systemctl status php-fpm
systemctl status httpd

Si el servei s'ha aturat, reinicieu-lo:

systemctl restart nginx
systemctl restart php-fpm

3. Revisar els fitxers de registre

No és correcte continuar amb les conjectures per als errors 502 i 504. El fitxer de registre mostra la causa real de l'error.

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

En sistemes basats en CentOS:

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

Les declaracions següents es poden veure als registres:

  • connect() ha fallat: No es pot connectar al servei de backend.
  • Esgotat el temps d'espera aigües amunt: El servei de backend respon tard.
  • connexió rebutjada: El servei està inactiu o s'està reenviant al port incorrecte.
  • permís denegat: Hi ha un problema de socket o de permís de fitxer.

4. Socket PHP-FPM o control de port

Nginx es connecta a PHP-FPM mitjançant sòcol o port. La ruta PHP-FPM al fitxer de configuració Nginx i el valor d'escolta PHP-FPM real han de ser els mateixos.

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

Per exemple, si Nginx utilitza:

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

El mateix sòcol s'ha d'escoltar al costat PHP-FPM:

listen = /run/php/php8.2-fpm.sock
Important: Si la versió de PHP ha canviat, és possible que Nginx encara estigui mirant l'antiga ruta del sòcol PHP-FPM. Aquesta és una de les causes més comunes dels errors 502.

5. Augment de la configuració del temps d'espera

Els errors 504 es poden rebre en grans panells de processament, mercats de joc, API o scripts PHP d'execució lenta. Els valors de temps d'espera de Nginx es poden augmentar.

nano /etc/nginx/nginx.conf

Es poden afegir els valors següents al bloc http o al bloc de servidor corresponent:

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

Proveu la configuració i reinicieu Nginx:

nginx -t
systemctl restart nginx

6. Comprovació dels límits del procés PHP-FPM

Quan el trànsit augmenta, els límits de transaccions PHP-FPM poden ser insuficients. En aquest cas, les sol·licituds es posen a la cua i es produeix un temps d'espera.

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

Exemples de configuració:

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

Aquests valors s'han d'ajustar segons la quantitat de RAM del servidor. Establir un valor massa alt augmenta el consum de memòria RAM.

Errors comuns

  • Canviar la configuració sense mirar el fitxer de registre
  • No s'actualitza la ruta del sòcol Nginx tot i que la versió de PHP ha canviat
  • No es corregeix la consulta lenta real augmentant el temps d'espera
  • Augment dels límits de PHP-FPM sense calcular la memòria RAM
  • Reiniciant el servei sense provar la configuració de Nginx

PMF

L'error 502 sempre és causat per Nginx?
No. Nginx és només el que mostra l'error. El problema real pot estar en PHP-FPM, el backend Apache, l'aplicació Node.js o un altre servei.

Augmentar el temps d'espera és la solució definitiva per als errors 504?
No sempre. L'augment del temps d'espera proporciona alleujament temporal. La solució real és trobar la consulta lenta, el processament pesat o el problema de rendiment.

És segur reiniciar PHP-FPM?
En general, és segur, però les sol·licituds actives es poden veure afectades durant un curt període de temps. En sistemes ocupats, s'haurien de preferir hores de trànsit baix.

Recomanacions de rendiment

  • Comproveu la versió PHP-FPM i la ruta del sòcol regularment.
  • Examineu els registres de consultes lentes al tauler web i als serveis de l'API.
  • Si la memòria RAM és insuficient, no augmenteu inconscientment el valor max_children de PHP-FPM.
  • Reduïu la càrrega del backend utilitzant un sistema de memòria cau.
  • Gestioneu els registres d'errors abans que creixin amb logrotate.

Aquest article està preparat especialment per a PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner