Administración de Servidores , Seguridad Web

Cómo Solucioné el Error 421 Misdirected Request en cPanel/CloudLinux

Guía paso a paso para resolver el error 421 Misdirected Request en servidores cPanel con CloudLinux, causado por un bug en Apache 2.4.64.

Si administras servidores, sabes que no hay nada como despertarse y ver que los sitios que alojas están caídos. Hace poco me enfrenté a un error particularmente frustrante en un servidor con cPanel y CloudLinux: todas las webs respondían con un críptico ERROR 421 MISDIRECTED REQUEST.

El mensaje completo era aún más específico:

“The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection.”

Este error básicamente significa que el navegador pide ver https://dominio-A.com, pero Apache le está presentando un certificado SSL que pertenece a dominio-B.com o al propio hostname del servidor. Es un fallo en la Indicación del Nombre del Servidor (SNI), crucial para alojar múltiples sitios SSL en una sola IP.

Después de investigar un poco, encontré la causa: un bug en una actualización de software reciente. En este post, te guiaré a través de los pasos que seguí para diagnosticar y solucionar el problema.

El Culpable: Un Bug en una Actualización de Apache

La investigación me llevó a varios foros y, finalmente, a un artículo de soporte de cPanel (Websites experiencing 421 Misdirected requests after upgrading to CloudLinux’s ea-apache24-2.4.64). Resulta que el problema fue introducido en una versión muy específica del paquete de Apache de EasyApache 4:

Paquete problemático: ea-apache24-2.4.64

Este paquete, al ser instalado en servidores con CloudLinux, contiene un bug que rompe la lógica de SNI para los VirtualHosts. Esto confirma que el problema no era una mala configuración de mi parte, sino un fallo en el propio software distribuido.

La Solución: Guía Paso a Paso

Aquí está el procedimiento exacto que seguí para restaurar el servicio. Te recomiendo seguirlo en este orden.

Paso 1: Confirmar el Diagnóstico

Antes de cambiar nada, siempre es bueno confirmar que tienes el problema exacto. Conéctate a tu servidor por SSH como root y verifica la versión de Apache instalada con el siguiente comando:

rpm -q ea-apache24

Si la salida muestra la versión ...2.4.64..., has encontrado al culpable.

Paso 2: La Estrategia (Update vs. Downgrade)

Aquí hay dos caminos, y es importante entender cuándo usar cada uno:

  • Actualizar (Update): Es la solución definitiva y recomendada. Los desarrolladores lanzan una nueva versión (ej. 2.4.65 o superior) que corrige el bug. Si esta versión ya está disponible en los repositorios, este es el camino a seguir.
  • Revertir (Downgrade): Es la solución de emergencia. Si una versión corregida aún no está disponible, puedes volver a la última versión que funcionaba correctamente. Esta fue la solución que apliqué para restaurar el servicio de inmediato.

Paso 3: Ejecutando la Solución

Basado en la estrategia anterior, aquí están los comandos.

Opción A (Recomendada): Intentar la Actualización

Primero, intenta actualizar el paquete. Es la solución más limpia. Ejecuta este comando:

yum update ea-apache24

Si yum encuentra una versión más nueva, ¡perfecto! Instálala y salta al paso 4. Si dice “No packages marked for update”, pasa a la Opción B.

Opción B (Plan de Respaldo): Hacer un Downgrade

Si no hay una actualización disponible, el downgrade es tu mejor opción para poner los sitios en línea de inmediato. Ejecuta este comando:

yum downgrade ea-apache24

El gestor de paquetes yum te pedirá confirmación para instalar la versión anterior. Acepta y deja que termine el proceso.

Paso 4: Reiniciar y Verificar

Independientemente de si actualizaste o revertiste, el último paso es reiniciar Apache para que los cambios surtan efecto. Ejecuta este comando:

/scripts/restartsrv_httpd

Una vez reiniciado, prueba los sitios web en tu navegador (usa una ventana de incógnito para evitar la caché). También puedes usar curl desde la terminal para una verificación rápida:

curl -Ivs https://uno-de-tus-dominios.com 2>&1 | grep "HTTP/"

Deberías ver una respuesta HTTP/2 200 OK o similar, confirmando que el error 421 ha desaparecido.

Conclusión

Este tipo de problemas nos recuerda lo crítico que es el software que corre en nuestros servidores. Un simple yum update puede ser la causa de una caída masiva. Afortunadamente, en este caso, la comunidad y el soporte de cPanel identificaron el problema rápidamente.

Al final, un yum downgrade ea-apache24 fue la solución que me permitió restaurar el servicio en minutos. Espero que esta guía detallada te ahorre tiempo y estrés si alguna vez te encuentras con este “Misdirected Request”.

¡Feliz administración de sistemas!