Enfrentamiento del lado del servidor: Apache vs NGINX

Los servidores web son el núcleo de Internet. Sin software de servidor web como Apache y NGINX , la web no sería como lo que vemos hoy. Sin embargo, no son intercambiables. Para saber cuál de esas dos opciones, Apache vs NGINX, es mejor para usted, debe comprender cómo funcionan.

En este artículo, hablaremos sobre qué son los servidores web y cómo funcionan, y presentaremos Apache y NGINX. Luego compararemos Apache vs NGINX en términos de diferencias clave y repasaremos sus ventajas y desventajas.

¡Hagámoslo!

¿Qué es un servidor Web?

En pocas palabras, un servidor web es una computadora dedicada a ejecutar software de servidor como Apache o NGINX. Un servidor web almacena  archivos del sitio y puede procesar solicitudes entrantes para acceder a ellos.

Es el software del servidor web el responsable de esta última tarea, que es una responsabilidad importante. Para los sitios web populares, es posible que el software que utilice deba manejar cantidades masivas de solicitudes en un período de tiempo reducido, por lo que debe estar a la altura de la tarea. Tanto NGINX como Apache son capaces de escalar y manejar grandes cantidades de solicitudes. Sin embargo, la forma en que funcionan ambas opciones de servidor es diferente a nivel central.

El software del servidor web funciona junto con varios otros componentes para servir sitios web y aplicaciones modernos. Por ejemplo, para configurar WordPress en un servidor necesitas los siguientes componentes:

  • Servidor web con soporte HTTPS :  puede ser Apache, NGINX o algunas otras opciones.
  • PHP:  WordPress se basa en el lenguaje PHP , por lo que lo necesita para ejecutar el Sistema de gestión de contenido (CMS).
  • Software de base de datos:  puede ser MySQL o MariaDB.

En este artículo, nos centraremos únicamente en el software del servidor web. Sin embargo, es importante comprender que el software no funciona en el vacío. En algunos casos, incluso puede configurar servidores web como Apache y NGINX para que funcionen  juntos . Una forma en que los sitios web pueden hacer eso es configurar NGINX para que funcione como un proxy inverso mientras usa Apache como el software del servidor principal. Las aplicaciones a su disposición son claramente variadas y abundantes.

Una introducción a Apache

Durante mucho tiempo, Apache fue la opción de servidor web predeterminada para la mayoría de los sitios. El software existe desde 1995, cuando Robert McCool presentó el servidor Apache HTTP. Unos años más tarde, Apache Software Foundation se hizo cargo del mantenimiento y Apache se convirtió en software de código abierto.

Apache obtuvo una enorme popularidad porque se instaló junto con varias de las principales distribuciones de Linux. Cuando se trata de servidores web, la prevalencia de Linux convirtió a Apache en la opción de facto durante años.

El nombre de Apache está tan arraigado en Linux que el sistema operativo (SO) usa el  comando httpd  para su proceso de servidor (algo que se encuentra dentro de Apache). Sin embargo, Apache no es el único gran nombre cuando se trata de servidores web.

Una introducción a NGINX

NGINX fue diseñado por Igor Sysoev para poder manejar lo que se conoce como el “problema C10K” . Se trata de optimizar una red para poder manejar hasta 10 000 conexiones simultáneas. En otras palabras, NGINX se creó teniendo en cuenta la máxima escalabilidad.

El software de código abierto se lanzó en 2004 y ahora hay dos tipos de licencia disponibles para él. Tiene la versión de código abierto y NGINX Plus , que es una solución empresarial que incluye soporte profesional y otras funciones.

En sus inicios, la mayoría de los sitios web usaban NGINX para manejar solo solicitudes estáticas debido a su dificultad de instalación percibida en comparación con Apache. Sin embargo, la cuota de mercado de NGINX ha crecido constantemente a lo largo de los años.

Según algunas encuestas, NGINX ha superado a Apache como el software de servidor web más popular del mundo. Otros números lo ponen justo en los talones de Apache:

Fuente de la imagen:  W3Techs .

Lo que es cierto es que NGINX es mucho más popular que Apache entre los sitios web más populares de la web. Esto se debe a que NGINX tiene una ventaja innegable en lo que respecta a la escalabilidad, que es clave para los sitios que reciben grandes cantidades de tráfico.

Además, NGINX puede realizar una «doble función» como proxy inverso o equilibrador de carga , si no desea utilizarlo como servidor web. En otras palabras, puede cumplir muchas más funciones que Apache.

Sin embargo, esto no quiere decir que NGINX deba ser su opción predeterminada si está considerando cambiar de servidor. A lo largo de las próximas secciones, desglosaremos lo que hace que cada software sea único.

Apache vs NGINX: 3 diferencias clave

Antes de que podamos hablar sobre qué solución de servidor es la mejor opción para usted, debemos analizar qué los hace diferentes. Comencemos hablando sobre el manejo de solicitudes con respecto a Apache vs NGINX.

1. Gestión de solicitudes

Tenga cuidado: aquí es donde las cosas se ponen un poco más técnicas. Apache usa lo que llama Módulos de Procesamiento Múltiple (MPM) para manejar las conexiones. El software le permite elegir entre tres tipos de MPM:

  1. mpm-prefork este módulo crea procesos de subproceso único para manejar cada solicitud. Cada “hijo”, a su vez, solo puede manejar una sola conexión.
  2. mpm_worker este módulo puede iniciar procesos de subprocesos múltiples, y cada subproceso puede administrar una conexión.
  3. mpm_event en su mayor parte, este módulo funciona igual que  mpm_worker , pero está optimizado para mantener vivas las conexiones.

Un aspecto único de Apache es que le permite elegir qué módulo desea usar e intercambiarlos según lo necesite. De forma predeterminada, Apache usa el módulo mpm-prefork  , que funciona muy bien para un bajo número de conexiones simultáneas. El  módulo mpm_worker  es mejor cuando se trata de escalar, pero requiere recursos de servidor adicionales.

En contraste, NGINX usa lo que llama un enfoque «impulsado por eventos». El software utiliza procesos de subprocesos múltiples, y cada subproceso es capaz de manejar múltiples conexiones.

Además, NGINX se ocupa de las solicitudes entrantes de forma asincrónica. En pocas palabras, esto significa que NGINX puede administrar más solicitudes con menos recursos del servidor, lo que lo hace más eficiente en este aspecto en particular.

2. Configuración del servidor

Apache usa  archivos .htaccess  para establecer reglas específicas sobre cómo maneja las solicitudes entrantes. Esos archivos incluyen todo, desde reglas de redirección hasta límites de memoria y más.

Con Apache, puede configurar  archivos .htaccess  individuales para cada directorio en su árbol de servidores. Para darle un ejemplo, si configura un servidor compartido, puede habilitar cada sitio web alojado en él para configurar sus propios archivos .htaccess  .

La desventaja de este alto nivel de flexibilidad es que cada archivo .htaccess  con el que se encuentra a lo largo de una ruta de solicitud debe interpretarse por separado. Esto significa que las solicitudes pueden tardar más en ejecutarse.

NGINX no le proporciona el mismo nivel de flexibilidad cuando se trata de configuración. En lugar de archivos de configuración de nivel directo, tiene un archivo principal que gobierna todo.

3. Módulos

Los módulos son complementos que puede usar junto con el software de servidor que elija para ampliar su funcionalidad predeterminada. Teniendo en cuenta la antigüedad y la popularidad de Apache, no debería sorprender que tenga ventaja sobre NGINX en lo que respecta a la selección de módulos.

Apache no solo ofrece más módulos, sino que tiende a ser más fácil encontrar documentación y tutoriales sobre cómo usarlos. Además, Apache le permite instalar, habilitar y deshabilitar módulos a voluntad, brindándole un alto grado de flexibilidad.

NGINX no ofrece la misma ventaja. Para usar módulos, debe compilarlos en el núcleo NGINX. Además, no puede deshabilitar los módulos una vez compilados, lo que dificulta mucho más el intercambio de opciones.

Es importante tener en cuenta que NGINX Plus incluye una función de módulo dinámico que le permite deshabilitar y habilitar módulos a voluntad. Sin embargo, incluso con Plus, aún necesita compilar esos módulos con el núcleo NGINX antes de poder usarlos.

Aunque la biblioteca de módulos y la documentación de NGINX están creciendo a un ritmo constante, todavía no pueden igualar a Apache en términos de volumen. Sin embargo, teniendo en cuenta cómo NGINX sigue ganando más cuota de mercado, esto probablemente cambiará en un futuro próximo.

Los pros y los contras de Apache frente a NGINX

A estas alturas, comprende las diferencias fundamentales entre Apache y NGINX. Ahora demos un breve desglose de los pros y los contras de cada software.

apache

Para empezar, hablemos de los principales beneficios de usar Apache:

  • Puede ser más fácil de instalar y configurar
  • Obtiene un control más granular sobre la configuración de su servidor gracias a  los archivos .htaccess 
  • La selección de módulos es mejor y puede habilitar y deshabilitar módulos a voluntad
  • Puede decidir cómo manejar las solicitudes utilizando diferentes módulos

La principal desventaja de usar Apache vs NGINX es que este último simplemente escala mejor. Si todavía está en la etapa de crecimiento de su sitio web, Apache debería ser más que suficiente para manejar el tráfico.

Sin embargo, en algún momento es posible que deba considerar actualizar la pila de su servidor si su sitio tiene un éxito espectacular. Esto podría significar cambiar a NGINX o usarlo como proxy inverso para su servidor web Apache.

NGINX

NGINX tiene dos ventajas claras cuando se trata de Apache: rendimiento y escalabilidad. Para ser más específicos, NGINX es mejor cuando se trata de:

  • Manejo de cantidades masivas de solicitudes simultáneas
  • Obtener un mejor rendimiento con menos recursos de hardware
  • Sirviendo contenido estático más rápido

Esta última parte es la razón por la que tantas personas eligen usar NGINX como una solución de proxy inverso. Sin embargo, a pesar de todos sus beneficios relacionados con el rendimiento, NGINX no está exento de fallas.

Aunque tener un solo archivo de configuración se traduce en tiempos de solicitud reducidos, también significa que NGINX es menos flexible que Apache. Esto también se aplica a los módulos, ya que la versión de código abierto de NGINX lo obliga a compilar módulos para usarlos, y no puede deshabilitarlos. En la práctica, esto significa que configurar NGINX para que funcione como lo necesita puede ser mucho más complejo que usar Apache.

La razón principal para usar NGINX es si el rendimiento es su principal preocupación. En algún momento, los sitios web populares deben sacar las armas pesadas para manejar el tráfico masivo sin tiempos de inactividad, largos tiempos de carga y más. Además, dado que NGINX puede permitirle obtener mejores resultados de rendimiento con menos recursos de hardware, puede ser una opción más rentable.

Conclusión

Cambiar de servidor o de software de servidor es siempre una gran decisión. Como tal, idealmente querrá usar la solución de servidor con la que se va a quedar a largo plazo.

Elegir entre Apache y NGINX no es tan claro como parece. En muchos casos, la decisión no dependerá de usted, ya que su servidor web decidirá qué software usar. En un nivel práctico, deberá investigar y averiguar qué opción utiliza un proveedor de alojamiento web antes de comprometerse con ellos.

Si está buscando una empresa de alojamiento que admita tanto Apache como NGINX, consulte Pressable , Cloudways , SiteGround y Flywheel .

¿Tiene alguna pregunta sobre cómo elegir entre Apache y NGINX? ¡Hablemos de ellos en la sección de comentarios a continuación! 

Imagen en miniatura del artículo de ProStockStudio / shutterstock.com