Cómo solucionar el error '502 Bad Gateway' en Plesk (Apache + PHP-FPM)
¡Hola! Si estás leyendo esto, probablemente te hayas encontrado con la temida pantalla de "502 Bad Gateway" en tu servidor Plesk. No te preocupes, es uno de los errores más comunes en entornos con Apache y PHP-FPM, y en la mayoría de los casos tiene una solución sencilla que puedes aplicar tú mismo sin ser un experto.
En esta guía extensa y paso a paso, vamos a desglosar qué significa exactamente este error, por qué ocurre en Plesk y, lo más importante, cómo solucionarlo de forma definitiva. Vamos a ello.
¿Qué significa realmente el error 502 Bad Gateway?
Antes de ponernos manos a la obra, es fundamental entender qué está pasando. Imagina que tu servidor es un restaurante.
- Apache es el camarero. Es el encargado de recibir a los clientes (las peticiones web) y servirles la comida (las páginas web).
- PHP-FPM es el cocinero. Es quien realmente prepara los platos (ejecuta el código PHP) en la trastienda.
- El 502 Bad Gateway es la respuesta que da el camarero (Apache) cuando intenta pedirle un plato al cocinero (PHP-FPM) y este no le responde o le responde de forma incorrecta.
En términos técnicos, Apache actúa como un "proxy" y reenvía las peticiones de PHP a PHP-FPM. Si PHP-FPM se ha caído, está sobrecargado, ha agotado su memoria o tiene un fallo de configuración, Apache no puede obtener la respuesta y le muestra al cliente (el navegador) un error 502.
Primeros pasos: Diagnóstico rápido
No te lances a cambiar archivos de configuración a lo loco. Primero, vamos a hacer un diagnóstico rápido para ver qué está fallando. Estos son los pasos iniciales que siempre debes seguir.
1. Reiniciar los servicios (la solución de oro)
A veces, la solución es tan simple como un reinicio. Esto limpia procesos colgados y reinicia la comunicación entre Apache y PHP-FPM.
Para ello, accede a tu servidor por SSH (si no sabes cómo, busca en tu panel de control de Plesk la opción "Acceso SSH" o usa un cliente como PuTTY) y ejecuta los siguientes comandos:
systemctl restart apache2
systemctl restart php-fpm
[TIP]
En Plesk, el servicio de PHP-FPM puede tener varios "pools" o instancias. Para ver el estado de todos ellos, puedes usar el comandops aux | grep php-fpm. Verás varios procesos; si hay alguno en estado "defunct" (zombi), es un claro síntoma de que ahí está el problema.
Si tras el reinicio el error persiste, vamos a profundizar.
2. Revisar los logs de errores
Los logs son la bitácora de tu servidor. Ahí se registran todos los errores, y nos dirán exactamente qué está pasando.
-
Log de errores de Apache: Normalmente se encuentra en
/var/log/apache2/error.log(en sistemas Debian/Ubuntu) o/var/log/httpd/error_log(en CentOS/RHEL). Puedes ver las últimas líneas con:tail -n 50 /var/log/apache2/error.log -
Log de errores de PHP-FPM: Suele estar en
/var/log/php-fpm/error.logo similar. También puedes verlo con:tail -n 50 /var/log/php-fpm/error.log
[INFO]
Busca en los logs mensajes como "Connection refused", "server reached pm.max_children", "Primary script unknown" o "Segmentation fault". Cualquiera de estos mensajes te dará una pista clave para la solución.
Causas comunes y soluciones para el error 502 en Plesk
Ahora que ya sabes cómo diagnosticar, vamos a ver las causas más frecuentes y cómo solucionarlas.
1. PHP-FPM se ha quedado sin procesos (pm.max_children)
Esta es la causa número uno. PHP-FPM tiene un límite de procesos que puede ejecutar simultáneamente. Si tu sitio web recibe muchos visitantes a la vez, o si tienes un script PHP mal optimizado que tarda mucho en ejecutarse, se agotan todos los procesos disponibles y PHP-FPM deja de responder.
La solución: Aumentar el número de procesos o ajustar la configuración.
¿Cómo hacerlo?
- Ve a Plesk > Herramientas y Ajustes > Configuración de PHP.
- Selecciona el dominio que está dando el error.
- En la pestaña "Configuración de PHP", busca la opción "pm.max_children".
- Auméntala gradualmente. Por ejemplo, si está en 5, pásala a 10 o 15. No la subas demasiado, ya que cada proceso consume memoria RAM.
- Guarda los cambios y reinicia PHP-FPM.
[WARNING]
Aumentarpm.max_childrensin control puede agotar la memoria RAM del servidor y provocar que el sistema operativo se vuelva inestable. Es crucial monitorizar el uso de memoria (free -men la terminal) antes y después del cambio.
2. Memoria insuficiente (memory_limit)
Cada proceso de PHP-FPM tiene un límite de memoria. Si un script PHP intenta usar más memoria de la permitida, el proceso se mata, y si esto ocurre con frecuencia, puede provocar un 502.
La solución: Aumentar el límite de memoria para PHP.
¿Cómo hacerlo?
Es muy similar al punto anterior. En la misma sección de "Configuración de PHP" en Plesk, busca la opción "memory_limit". Auméntala de 128M a 256M o 512M, dependiendo de los recursos de tu servidor.
3. Problemas con los sockets de escucha
Apache y PHP-FPM se comunican a través de un "socket". Este puede ser de tipo TCP (una dirección IP y un puerto) o un socket Unix (un archivo en el sistema). Si hay una discrepancia entre lo que Apache espera y lo que PHP-FPM está usando, la comunicación falla.
La solución: Verificar la configuración del socket.
¿Cómo hacerlo?
- Revisa el archivo de configuración del pool de PHP-FPM para tu dominio. Normalmente se encuentra en
/etc/php/7.4/fpm/pool.d/(la versión de PHP puede variar). Busca dominios con nombres comodominio.com.conf. - Dentro, busca la línea
listen =. Verás algo comolisten = 127.0.0.1:9000olisten = /run/php/php7.4-fpm.sock. - Ahora, revisa la configuración de Apache para ese dominio. En Plesk, puedes verla en Plesk > Dominio > Apache y nginx > Configuración de Apache.
- Busca la directiva
SetHandleroProxyPassMatch. Debe apuntar al mismo socket o puerto que has visto en el paso 2.
[TIP]
En Plesk, normalmente esto ya viene bien configurado automáticamente. Pero si modificaste algo manualmente o usas un plugin, es un buen punto a verificar. Asegúrate de que la ruta del socket existe y tiene los permisos correctos.
4. Permisos incorrectos en archivos o directorios
Si los archivos de tu sitio web tienen permisos incorrectos, PHP-FPM no podrá leerlos y fallará.
La solución: Corregir los permisos de archivos y directorios.
¿Cómo hacerlo?
Desde Plesk, es muy fácil. Ve a Plesk > Dominio > Archivos. Selecciona todos los archivos y directorios, haz clic en "Permisos" y asegúrate de que el usuario del sistema (normalmente www-data o el usuario del dominio) tenga permisos de lectura y ejecución. Una configuración segura es 755 para directorios y 644 para archivos.
5. Errores en el código PHP (Fatal Errors)
Un error fatal en tu código PHP (como una función no definida o un error de sintaxis grave) puede hacer que el proceso de PHP-FPM se detenga abruptamente, causando el 502.
La solución: Revisar los logs y corregir el código.
¿Cómo hacerlo?
Vuelve a mirar el log de errores de PHP-FPM. Si ves un mensaje como PHP Fatal error: Uncaught Error: Call to undefined function..., ese es el problema. Revisa el archivo indicado en el error y corrígelo.
Soluciones avanzadas para el error 502 en Plesk
Si has probado todo lo anterior y el error persiste, vamos a por las soluciones más avanzadas.
1. Ajustar los timeouts de Apache y PHP-FPM
A veces, el problema no es que PHP-FPM no responda, sino que tarda más de lo que Apache está dispuesto a esperar.
La solución: Aumentar el tiempo de espera (timeout).
¿Cómo hacerlo?
-
En Plesk > Dominio > Apache y nginx > Configuración de Apache, añade las siguientes directivas en el campo "Directivas de Apache adicionales":
ProxyTimeout 300 Timeout 300Esto le dice a Apache que espere hasta 300 segundos (5 minutos) antes de rendirse.
-
También puedes ajustar el
max_execution_timeen la configuración de PHP desde Plesk, aumentándolo a 300 o más.
2. El pool de PHP-FPM está dañado o la versión es incorrecta
En Plesk, cada dominio puede tener su propia versión de PHP. Si el pool de PHP-FPM de un dominio específico está corrupto, puede dar problemas.
La solución: Recrear el pool o cambiar la versión de PHP.
¿Cómo hacerlo?
- Ve a Plesk > Dominio > Configuración de PHP.
- Cambia la versión de PHP a otra (por ejemplo, de 7.4 a 8.0) y guarda. Luego, vuelve a cambiarla a la original. Esto fuerza a Plesk a recrear los archivos de configuración del pool.
3. Problemas con el firewall o el proxy
Si tienes un firewall configurado o usas un proxy inverso como nginx, puede estar bloqueando la comunicación entre Apache y PHP-FPM.
La solución: Verificar las reglas del firewall y la configuración del proxy.
¿Cómo hacerlo?
- Firewall: Asegúrate de que el puerto (por defecto, el
9000) esté abierto para conexiones locales (127.0.0.1). Puedes probar connetstat -tulpn | grep 9000para ver si está escuchando. - Nginx: En Plesk, es común usar nginx como proxy inverso. Ve a Plesk > Dominio > Apache y nginx y en la pestaña de "nginx", verifica que no haya reglas que bloqueen el reenvío de peticiones. Puedes intentar deshabilitar el proxy de nginx temporalmente para ver si el 502 desaparece.
¿Y si nada de esto funciona?
Si has llegado hasta aquí y el error persiste, no te desesperes. Hay dos opciones finales:
1. Revisar el estado del disco duro
Un disco lleno puede provocar errores extraños en el servidor, incluido el 502.
df -h
Si la partición donde está el sistema operativo o los sitios web está al 100%, tendrás que liberar espacio.
2. Contactar con el soporte del servidor o buscar ayuda profesional
A veces, el problema es más profundo y requiere la intervención de un administrador de sistemas experimentado. No tengas miedo de pedir ayuda.
[WARNING]
Evita a toda costa modificar archivos de configuración del sistema si no estás seguro de lo que haces. Un error de configuración en Apache o PHP-FPM puede dejar tu servidor completamente inaccesible.
Preguntas Frecuentes (FAQ) sobre el error 502 en Plesk
P: ¿El error 502 es lo mismo que el error 500?
R: No. El error 500 es un error "Internal Server Error" que ocurre cuando el servidor no sabe qué hacer con una petición. El 502 es específico de la comunicación entre dos servidores (Apache y PHP-FPM). Es un error de "puerta de enlace".
P: ¿Puedo solucionar el 502 desde el panel de Plesk sin usar SSH?
R: Sí, para las soluciones más comunes (aumentar pm.max_children, memory_limit, cambiar permisos) puedes hacerlo todo desde la interfaz web de Plesk. Solo necesitas SSH para diagnósticos avanzados o reinicios de servicios si no tienes acceso a la línea de comandos desde el panel (aunque normalmente sí se puede).
P: ¿Cada cuánto tiempo debería revisar la configuración de PHP-FPM?
R: Te recomiendo hacerlo siempre que notes que tu sitio web va lento o después de añadir una funcionalidad nueva que consuma muchos recursos. La monitorización proactiva es clave para evitar estos errores.
P: ¿Este error es exclusivo de Plesk?
R: No, el error 502 es genérico de servidores web. Ocurre en otros paneles como cPanel, o incluso en servidores sin panel. Sin embargo, la forma de solucionarlo varía ligeramente según el panel. Por ejemplo, en otros paneles como Syspanel (accesible a través del puerto 2106), la estructura de archivos de configuración es diferente, pero el concepto de pm.max_children y memory_limit es el mismo.
Conclusión final
El error 502 Bad Gateway en Plesk puede ser frustrante, pero como has visto, no es un problema insuperable. La clave está en un diagnóstico metódico: reiniciar servicios, revisar logs y ajustar la configuración de PHP-FPM y Apache.
Resumen de la solución rápida:
- Reinicia Apache y PHP-FPM.
- Revisa los logs para obtener pistas.
- Aumenta
pm.max_childrenymemory_limiten la configuración de PHP. - Verifica los permisos de archivos y directorios.
- Si nada funciona, ajusta los timeouts y prueba a cambiar la versión de PHP.
Con estas herramientas, estarás preparado para enfrentarte a este error la próxima vez que aparezca. ¡Mucha suerte!
