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

Solución al error 502 Bad Gateway y 504 Gateway Timeout en el servidor Linux

Yazdır

Solución al error 502 Bad Gateway y 504 Gateway Timeout en el servidor Linux

Una guía paso a paso para resolver problemas de Nginx, Apache, PHP-FPM y tiempo de espera del servicio.

visto en sitios web 502 Puerta de enlace no válida Y 504 Tiempo de espera de puerta de enlace Los errores generalmente ocurren porque el servidor web no recibe la respuesta correcta del servicio back-end. Este servicio puede ser PHP-FPM, backend de Apache, aplicación Node.js, servicio API del panel de juego u otra aplicación detrás del proxy.

Estos errores son especialmente comunes en hosting, paneles de juegos, WHMCS, Pterodactyl, paneles de administración personalizados y sistemas de inicio basados ​​en web.

Explicación sencilla: Nginx es como el asistente de la puerta. Si el PHP o la aplicación interna no responde, mostrará un error 502 o 504 al usuario.

1. Diferencia entre el error 502 y 504

  • 502 Puerta de enlace no válida: El servidor web no puede conectarse al servicio backend o recibe una respuesta confusa.
  • 504 Tiempo de espera de puerta de enlace: El servicio de backend parece estar respondiendo, pero la respuesta no llega a tiempo.

Entonces, 502 es más bien una falla de conexión/servicio, y 504 es un problema de lentitud o tiempo de espera.

2. Verificar los estados del servicio

Primero, verifique si el servidor web y los servicios PHP se están ejecutando.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

En los sistemas CentOS, AlmaLinux o Rocky Linux, el servicio PHP-FPM puede denominarse:

systemctl status php-fpm
systemctl status httpd

Si el servicio se ha detenido, reinícielo:

systemctl restart nginx
systemctl restart php-fpm

3. Revisión de archivos de registro

No es correcto proceder con conjeturas para los errores 502 y 504. El archivo de registro muestra la causa real del error.

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

En sistemas basados ​​en CentOS:

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

Las siguientes declaraciones se pueden ver en los registros:

  • conectar() falló: No se puede conectar al servicio backend.
  • tiempo de espera agotado: El servicio backend responde tarde.
  • conexión rechazada: El servicio no funciona o hay reenvío al puerto incorrecto.
  • permiso denegado: Hay un problema de permiso de archivo o socket.

4. Control de puerto o socket PHP-FPM

Nginx se conecta a PHP-FPM a través de un socket o puerto. La ruta PHP-FPM en el archivo de configuración de Nginx y el valor de escucha PHP-FPM real deben ser los mismos.

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

Por ejemplo, si Nginx usa:

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

Se debe escuchar el mismo socket en el lado PHP-FPM:

listen = /run/php/php8.2-fpm.sock
Importante: Si la versión de PHP ha cambiado, es posible que Nginx todavía esté buscando la antigua ruta del socket PHP-FPM. Esta es una de las causas más comunes de errores 502.

5. Aumento de la configuración del tiempo de espera

Se pueden recibir errores 504 en paneles de procesamiento grandes, mercados de juegos, API o scripts PHP de ejecución lenta. Los valores de tiempo de espera de Nginx se pueden aumentar.

nano /etc/nginx/nginx.conf

Se pueden agregar los siguientes valores al bloque http o al bloque del servidor correspondiente:

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

Pruebe la configuración y reinicie Nginx:

nginx -t
systemctl restart nginx

6. Verificación de los límites del proceso PHP-FPM

Cuando el tráfico aumenta, los límites de transacciones PHP-FPM pueden ser insuficientes. En este caso, las solicitudes se ponen en cola y se agota el tiempo de espera.

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

Configuraciones de ejemplo:

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

Estos valores se deben ajustar según la cantidad de RAM del servidor. Establecer un valor demasiado alto aumenta el consumo de RAM.

Errores comunes

  • Cambiar la configuración sin mirar el archivo de registro
  • No actualizar la ruta del socket Nginx a pesar de que la versión de PHP ha cambiado
  • No solucionar la consulta lenta real aumentando el tiempo de espera
  • Aumentar los límites de PHP-FPM sin calcular la RAM
  • Reiniciar el servicio sin probar la configuración de Nginx

Preguntas frecuentes

¿El error 502 siempre es causado por Nginx?
No. Nginx es solo el que muestra el error. El verdadero problema puede estar en PHP-FPM, el backend de Apache, la aplicación Node.js u otro servicio.

¿Aumentar el tiempo de espera es la solución definitiva para los errores 504?
No siempre. El aumento del tiempo de espera proporciona un alivio temporal. La verdadera solución es encontrar consultas lentas, procesamiento pesado o problemas de rendimiento.

¿Es seguro reiniciar PHP-FPM?
Generalmente es seguro, pero las solicitudes activas pueden verse afectadas por un corto tiempo. En sistemas ocupados, se deben preferir las horas de poco tráfico.

Recomendaciones de rendimiento

  • Verifique periódicamente la versión de PHP-FPM y la ruta del socket.
  • Examinar registros de consultas lentas en el panel web y los servicios API.
  • Si la RAM es insuficiente, no aumente inconscientemente el valor PHP-FPM max_children.
  • Reduzca la carga de backend mediante el uso de un sistema de caché.
  • Administre los registros de errores antes de que crezcan con logrotate.

Este artículo está especialmente preparado para PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner