Nginx vs Apache: comparación directa y cómo elegir

Actualizado: 2022-04-19 / Artículo por: Timothy Shim

Ambos Nginx y APACHE son productos maduros con un rico conjunto de funciones y alto rendimiento. Comparten orígenes comunes de código abierto y puede implementarlos en servidores Windows o Linux. 

Sin embargo, algunas diferencias clave pueden hacer que elija uno sobre el otro.

Por ejemplo, Apache es una solución integral que admite muchas tecnologías y módulos diferentes listos para usar. Por el contrario, Nginx se basa en módulos de terceros para ampliar su funcionalidad.

para ver cual servidor web podría adaptarse mejor a sus necesidades, profundicemos en estas opciones.

Apache: el servidor web héroe original

APACHE

Creado en 1995 por Roberto McCool y originalmente llamado "Proyecto de servidor HTTP Apache" (de ahí el nombre), Apache fue diseñado para crear un servidor robusto de grado comercial que es de uso gratuito, incluso con modificaciones. Se hizo popular muy rápidamente porque podía ejecutarse en muchos sistemas operativos diferentes, desde Unix hasta Windows.

Debido a esta popularidad de larga data, considero a Apache como el servidor web "héroe original". Es sólido, está bien documentado y cuenta con el respaldo de una comunidad abierta de desarrolladores bajo los auspicios de Apache Software Foundation.

Nginx: titán de una nueva era

Nginx

Nginx (pronunciado como "Engine X") es un servidor proxy inverso y HTTP, un servidor proxy de correo y un servidor proxy TCP/UDP genérico que se utiliza para alojar sitios web y aplicaciones de todos los tamaños. Fue lanzado públicamente por primera vez por el desarrollador ruso. Igor Sysoev. El objetivo inicial de Nginx era resolver el problema de C10K que Apache luchaba por gestionar. 

Leer también

Diferencias notables entre Nginx y Apache

Arquitectura

Nginx y Apache comparten algunas similitudes en su arquitectura central. Por ejemplo, ambos utilizan procesos maestro-trabajador para mejorar el rendimiento. Incluso tienen archivos de configuración similares. Sin embargo, las diferencias en el estilo arquitectónico dan como resultado una variación significativa del rendimiento de vista amplia.

Nginx tiene una arquitectura basada en eventos amigable con los recursos que usa cantidades pequeñas pero constantes de memoria bajo carga. Esta característica lo hace ideal para alojar sitios web con altos niveles de tráfico o aquellos que tienen picos de tráfico intermitentes.

La arquitectura basada en procesos de Apache maneja cada conexión a través de un subproceso dedicado, lo que requiere más memoria. Sin embargo, escala mejor bajo cargas pesadas en máquinas con más núcleos de CPU y RAM.

Uso de la memoria

Nginx es conocido por su alto rendimiento y bajo consumo de recursos. Por otro lado, Apache puede consumir mucha memoria, especialmente cuando se ejecutan varios bloques de servidor. Si bien ambos usan memoria para manejar solicitudes HTTP, Nginx es más liviano. 

El diseño de Apache significaba que generaba un subproceso por conexión, y cada subproceso usaría una cierta cantidad de RAM. A medida que aumentaba el tráfico, esto podría generar problemas, ya que se requeriría más RAM, especialmente en servidores con menos memoria. Apache también crea nuevos procesos para cada solicitud, incluso del mismo usuario.

Comparativamente, Nginx usa un proceso para manejar múltiples conexiones a la vez. 

Manejo de PHP

Debido a que estos dos servidores web trabajan principalmente con PHP, la forma en que manejan el código significa un potencial de rendimiento significativo. Nginx no ejecuta PHP directamente de forma predeterminada. En su lugar, pasa la solicitud a PHP-FPM (FastCGI Process Manager), que maneja la solicitud y envía una respuesta a Nginx, que luego entrega el contenido al cliente.

Dado que Nginx no espera una respuesta de PHP-FPM para atender otra solicitud (de manera similar a cómo no espera una respuesta de los clientes cuando entrega contenido estático), Nginx puede manejar más solicitudes al mismo tiempo de las que Apache podrá administrar.

Apache usa un módulo llamado mod_php para ejecutar código PHP. En este modelo, cada vez que ingresa una solicitud HTTP, Apache genera un nuevo proceso o subproceso (dependiendo de cómo esté configurado) para manejar esa solicitud. Este proceso también es responsable de manejar cualquier solicitud de PHP dentro de esa solicitud.

Este modelo funciona, pero tiene algunos inconvenientes. Por un lado, generar un nuevo proceso para cada solicitud puede ser intensivo para el sistema, especialmente si hay muchas solicitudes simultáneas. Generar un nuevo proceso para cada solicitud de PHP dentro de una solicitud es aún más intensivo ya que el sistema operativo tiene que generar un nuevo intérprete para cada uno.

Cómo elegir entre Nginx y Apache

Como puede ver, no hay un ganador claro entre estos gigantes del servidor web. Depende principalmente de lo que necesite que administre el servidor web. 

Elija Apache si: 

  • Está ejecutando un sitio web de mediana/gran escala que probablemente crecerá significativamente con el tiempo y requiere módulos personalizados.
  • Tiene muchos hosts virtuales o módulos habilitados en su servidor y los necesita todos al inicio.
  • Está ejecutando un sitio web pequeño y no quiere perder el tiempo aprendiendo cómo configurar Nginx correctamente.

Utilice Nginx si:

  • Está ejecutando un sitio web a gran escala y desea configurar fácilmente el almacenamiento en caché y el equilibrio de carga al mismo tiempo sin preocuparse por las limitaciones de hardware.

Pensamientos finales sobre Nginx vs Apache

Si ejecuta Apache o Nginx dependerá de sus necesidades y del hardware que esté ejecutando. Puede usar cualquiera de las dos opciones para servir sitios web PHP. Pero hay mucho más que considerar que solo eso. 

Si tiene un sitio web simple, es posible que no note ninguna diferencia entre ellos. Pero si su sitio recibe más tráfico y crece, necesitará saber cómo funciona cada servidor y cómo escala bajo carga.

Leer también

Acerca de Timothy Shim

Timothy Shim es escritor, editor y experto en tecnología. Comenzando su carrera en el campo de la tecnología de la información, rápidamente encontró su camino en la impresión y desde entonces ha trabajado con títulos de medios internacionales, regionales y nacionales, incluidos ComputerWorld, PC.com, Business Today y The Asian Banker. Su experiencia se encuentra en el campo de la tecnología tanto desde el punto de vista del consumidor como desde el de la empresa.