Breve post de un tema que nos ha llevado de locura desde hace unas semanas: «Error Bad Gateway 502 Nginx» al cargar una página web en un servidor Plesk. No en todos los dominios, ni en el Plesk, pero si en un dominio concreto.
Al mirar en el log de NGINX aparece:
nginx error: connect() failed (111: Connection refused) while connecting to upstream
¿Y qué significa ese error de nginx?
Después de darle muchas vueltas y que siempre se soluciona al reiniciar PLESK hemos dado con el culpable:
En este caso es un bloqueo de la IP asociada a ese dominio por parte del FAIL2BAN instalado para prevenir ataques externos.
Fail2Ban no detecta automáticamente las IPs adicionales (además de la principal) configuradas en un servidor PLESK, por lo que si hay muchas peticiones a ese alojamiento web, Fail2Ban acaba baneado la IP y por tanto la web no puede conectar y da el error:
nginx error: connect() failed (111: Connection refused) while connecting to upstream
¿Cómo se puede solucionar este error de Nginx?
Añadiendo todas las IPs asociadas al servidor a la lista blanca de IPs dentro del FAIL2BAN (en las versiones más nuevas de PLESK el Fail2Ban ahora se llama «IP Address Banning».
RECUERDA: Siempre que añadas una IP adicional a un servidor bajo PLESK con Fail2Ban activado, hay que dar de alta la IP adicional en la lista blanca del Fail2Ban. ¡Muy importante!
Otra opción (que no aconsejamos) es desactivar el JAIL de Fail2Ban: «plesk-apache-badbot» que es el que detecta el ataque.
Esperamos que esto le pueda servir a alguien.
[ ACTUALIZACIÓN 12/enero/2016: ] Parece ser que el comportamiento normal de las últimas versiones de PLESK es que cada vez que se da de alta una IP adicional en el panel, automáticamente lo mete en la lista blanca de Fail2ban por lo que si se usa una versión 12.5.x no se tendrá ese problema. [ /ACTUALIZACIÓN ]
Créditos imágenes: Shutterstock – Dima Sidelnikov