Combate entre servidores web: NGINX vs Apache


Por Damián Wajser, Technical Team Lead Softtek 


Escoger un servidor Web solía ser fácil. Si teníamos una web Microsoft, utilizabamos Internet Information Server (IIS), sino, Apache. Ahora, sin embargo, hay más opciones de servidores Web.

Combate-entre-servidores-web-NGINX-vs-ApacheUna de las principales alternativas es NGINX, programa de código abierto que se convirtió en el número dos de servidores Web en el mundo.

Para tomar una decisión, hay que haber lidiado con ambos, a continuación veremos una breve reseña de cada uno.

Apache HTTP Server 

Es el servidor web más usado en el mundo, pero como pasa en muchos casos, lo más usado no es siempre lo mejor, solo lo que se conoce más. Apache tiene muchas características positivas, pero su gran deficiencia es el rendimiento, cosa que es sumamente importante en las aplicaciones de hoy en día.

Apache crea hilos y sub-hilos para manejar conexiones adicionales. El administrador puede configurar el servidor para controlar el número máximo de hilos permitidos. Esta configuración varía dependiendo de la memoria disponible en la máquina.

Demasiados procesos en memoria hace que el rendimiento se vea gravemente disminuido.

Además, cuando el máximo de hilos es alcanzado, Apache restringe conexiones adicionales. Igualmente puede ser configurado para ejecutarse en modo multi-proceso de pre-bifurcada o worker (MPM). De cualquier manera sé que crean nuevos procesos por cada usuarios adicional que se conecte.

El factor limitante en Apache es la memoria y el potencial de hilos-muertos que se contengan en la memoria. Si se detiene un hilo, el usuario espera a que la página web aparezca, hasta que el proceso se libere, para que puede enviar la página nuevamente. Si un proceso se estanca, no sabe cómo reiniciar, quedando así atrapados.

NGINX

NGINX es un servidor web HTTP de código abierto que incluye servicios de correo electrónico con acceso al Internet Message Protocol (IMAP) y al servidor Post Office Protocol (POP). Además, NGINX está listo para ser utilizado como un proxy inverso. En este modo, se utiliza para equilibrar la carga entre los servidores back-end, como también para ser utilizado como caché en un servidor back-end lento.

Su arquitectura, es diferente al modelo tradicional, de crear una instancia por cada request. NGINX procesa decenas de miles de conexiones simultáneas en un proceso compacto y con varios núcleos de CPU.

Además se compone de módulos que se incluyen en tiempo de compilación. Eso significa que el usuario descarga el código fuente y selecciona qué módulos quiere utilizar, haciendo más liviano que la competencia. Hay módulos para la conexión a clones de aplicaciones, balanceo de carga, servidor proxy, y otros. No hay módulo para PHP, ya que Nginx puede interpretar código PHP en sí mismo.

Empresas que usan Nginx

Empresas como Facebook y WordPress.com, lo utilizan porque la arquitectura asíncrona del servidor web deja una pequeña huella de memoria y bajo consumo de recursos, haciéndolo ideal para el manejo de múltiples y cambiantes activas páginas Web.
Esa es una tarea difícil. Es así como NGINX puede soportar cientos de millones de usuarios de Facebook.

Nginx también es utilizado por grandes empresas de internet como: tumblr, Instagram, Yahoo, YouTube, Pinterest, Zynga, SourceForge, GitHub, DropBox, Intel, NetFlix, entre otras. A su vez lo utilizan algunos CDN (Content Delivery Network) como Cloudflare, NetDNA/MaxCDN, Cachefly, ProCDN/MediaTemple.

7 Razones para usar Nginx

1. Es ligero

Nginx reduce el consumo de RAM.

2. Es multiplataforma y fácil de instalar

La mayoría de las grandes distribuciones de GNU/Linux, tienen Nginx en sus repositorios.

3. ¡Se puede usar junto a Apache!

Sí, como lo lees, algunas empresas solo usan Nginx para servir contenido estático y Apache para el contenido dinámico.

4. Caché

Puedes usar Nginx como caché, con algo de configuración, permitiendo mejorar la eficiencia de tu aplicación sin tocar la programación de la misma.

5. Balanceador de carga

Este servidor web puede funcionar como balanceador de carga, distribuyendo el tráfico entre varios servidores, permitiendo mayor escalabilidad.

6. Soporte comunitario y profesional

Nginx, Inc está detrás del desarrollo de Nginx, además de la comunidad en general, permitiendo tener un soporte tanto profesional como comunitario.

7. Compatibilidad con las aplicaciones web más populares

Nginx es compatible con una gran cantidad de CMS existentes en el mercado, y hay un muchos tutoriales y documentación para instalar estos bajo Nginx, como por ejemplo: Wordpress, Joomla, Drupal, phpBB y más!

Conclusiones:

Aquí hemos hablado de algunas explicaciones de cómo Nginx es diferente de Apache y cómo pueden considerar el uso de uno o ambos, y cuál de los dos podría satisfacer tus necesidades más de cerca.

Tanto el consumo de recursos como la velocidad de respuesta al usuario son factores que influyen en los test de rendimiento de servidores web, y Nginx sabe cómo salir muy bien frente a Apache. Nginx a diferencia de Apache, no tiene módulos para servir contenido dinámico sea PHP, Python, Ruby, entre otros, para servir este contenido utiliza módulos externos que se pueden agregar al server, lo cual lo hace mucho más liviano y ágil.

Igualmente con todas estas razones y más, Nginx se convierte es una opción más que viable como reemplazo a Apache HTTP Server.

Te invito a dejar tu opinión. 

Temas: web services, open source

Acerca de LatAm Digital

Blog Oficial de Latinoamérica Digital. Información sobre innovación, tecnología, nuestros servicios y la cultura Softtek

Publicaciones por tema

ver todos
To top