Blog

IaaS, tecnología, internet y cloudi.ng rss

Nginx vs Apache: ¿cuál prefieres tú?

Nginx

Apache y Nginx son los dos servidores web de código abierto más comunes en el mundo. Juntos, son los responsables de servir sobre el 50% del tráfico en internet. Ambas soluciones son capaces de manejas diversas cargas de trabajo y ser compatibles con otros softwares para dar lugar a una web stack completa.

VPS Apache y VPS Nginx comparten muchas cualidades pero no deberías pensar en ellos como completamente intercambiables. Cada uno de ellos destaca en un área concreta y es importante que comprendas cuál es el que mejor se adapta a tus necesidades. En este artículo te mostraremos cuáles son esas áreas en las que cada uno de ellos destaca.

Manejo de las conexiones y del tráfico

Una de las mayores diferencias entre Apache y Nginx es la forma en la que ambos manejan las conexiones y el tráfico.

Apache proporciona una variedad de módulos de multi-proceso (Apache los llama MPMs) que determinan cómo se manejan las peticiones de los clientes. Básicamente, esto permite a los administradores intercambiar su conexión con un manejo fácil de la arquitectura. Estos módulos son mpm_prefork, mpm_worker y mpm_event.

Apache provee de una arquitectura flexible al dar la posibilidad de elegir diferentes conexiones y algoritmos que proporcionan respuestas. Las opciones que ofrece son principalmente una consecuencia de la evolución del servidor y la necesidad creciente de competitividad, ya que el panorama de internet ha cambiado.

Nginx llegó a escena después que Apache, con más consciencia de los problemas de competitividad a los que tendrían que enfrentarse los sites a escala. Con esto en mente, Nginx fue diseñado desde la base para usar un algoritmo de manejo de conexiones que fuese asíncrónico, sin bloqueo y gestionado por eventos. Nginx genera trabajadores de procesos, cada uno de los cuales puede manejar miles de conexiones. Esto se consigue a través de la implementación de un mecanismo de bucle rápido que, de forma continua, comprueba y procesa eventos. La disociación entre lo que es trabajo real y las conexiones permite a cada trabajador involucrarse con una conexión sólo cuando se ha desencadenado un nuevo evento.

Cada una de las conexiones manejadas por el trabajador se colocan en el bucle de eventos, donde existen junto a otras conexiones. Dentro del bucle los eventos se procesan asincrónicamente, permitiendo que el trabajo sea gestionado a través de un modo de no bloqueo. Cuando la conexión se cierra, se quita del bucle.

Esta clase de proceso de conexiones permite a Nginx escalar de una forma increíble con recursos muy limitados. Como el servidor no es multi-proceso y los procesos no son generados para manejar cada nueva conexión, el uso de la memoria y el CPU tienden a mantenerse constantes.

Contenido Estático vs Dinámico

En términos de casos de uso real, una de las comparaciones más comunes entre Apache y Nginx es el modo en que cada servidor maneja peticiones para contenido estático y dinámico.

Los servidores Apache pueden manejar contenido estático usando sus métodos convencionales basados en archivos. La ejecución de estas operaciones es principalmente una función de los métodos MPM arriba descritos.

Nginx no interpreta archivos .htaccess ni provee de ningún mecanismo para la evaluar la configuración por directorio fuera del archivo de la configuración principal. Esto quizá sea menos flexible que el modelo Apache, pero también tiene sus propias ventajas.

Una de esas ventajas es su relación con la seguridad. La distribución del acceso a la configuración a un nivel de directorio también distribuye la responsabilidad de la seguridad a los usuarios individuales, en los que quizá no se debería confiar para realizar esta tarea bien. Asegurándose de que el administrador mantiene el control sobre todo el servidor web, puede prevenir algunos fallos de seguridad que pueden ocurrir cuando se da acceso a terceras partes.

To be continued (…) En nuestro artículo de mañana os seguiremos contando las diferencias entre ambos servidores web.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>