[SOLUCIONADO] Error 502 Bad Gateway en Nginx con PHP-FPM
El error 502 Bad Gateway en un servidor web Nginx con PHP-FPM ocurre cuando Nginx actúa como proxy inverso pero no logra comunicarse con el proceso de escucha de PHP. El mensaje de error típico en /var/log/nginx/error.log es: connect() to unix:/run/php/php8.2-fpm.sock failed (2: No such file or directory) o Connection refused.
El Diagnóstico Rápido
sudo systemctl start php-fpm (o php8.2-fpm)www-data:www-data en /etc/php/fpm/pool.d/www.confEl error 502 Bad Gateway en un servidor web Nginx con PHP-FPM ocurre cuando Nginx actúa como proxy inverso pero no logra comunicarse con el proceso de escucha de PHP. El mensaje de error típico en /var/log/nginx/error.log es:
connect() to unix:/run/php/php8.2-fpm.sock failed (2: No such file or directory) o Connection refused.
Solución Rápida (1 Minuto):
- Inicia el servicio PHP-FPM de tu versión instalada:
sudo systemctl restart php8.2-fpm- Revisa que la ruta del socket en el
fastcgi_passde Nginx coincida exactamente con la versión activa de PHP.
La Solución Paso a Paso
-
1
Paso 1: Verificar el estado del demonio PHP-FPM
Asegúrate de que el servicio de PHP-FPM esté activo en tu servidor:
BASH# Comprobar el servicio (ajusta según tu versión: 8.1, 8.2, 8.3) sudo systemctl status php8.2-fpmSi el estado indica
inactive (dead)ofailed, inicialízalo:BASHsudo systemctl enable --now php8.2-fpm -
2
Paso 2: Verificar la ubicación exacta del archivo Socket (.sock)
Comprueba la ruta real donde PHP-FPM está escuchando las conexiones:
BASHls -la /run/php/Salida esperada:
php8.2-fpm.sockophp8.3-fpm.sock.Abre el archivo de configuración del bloque de servidor de tu sitio en
/etc/nginx/sites-available/tudominio.conf:NGINXlocation ~ \.php$ { include snippets/fastcgi-php.conf; # La ruta DEBE coincidir exactamente con el archivo .sock de tu sistema: fastcgi_pass unix:/run/php/php8.2-fpm.sock; } -
3
Paso 3: Corregir permisos en el socket de PHP-FPM
Si el archivo
.sockexiste pero Nginx muestraPermission denieden sus registros:Abre la configuración del pool de usuarios de PHP-FPM:
BASHsudo nano /etc/php/8.2/fpm/pool.d/www.confAsegúrate de que el propietario del socket sea el mismo usuario que ejecuta Nginx (
www-data):INIlisten.owner = www-data listen.group = www-data listen.mode = 0660Reinicia PHP-FPM y Nginx:
BASHsudo systemctl restart php8.2-fpm sudo systemctl restart nginx
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Al actualizar la versión de PHP en el servidor (ej. de PHP 8.1 a 8.3), recuerda actualizar la ruta
fastcgi_passen Nginx, de lo contrario volverá el error 502.