Jump to content

Diferencias entre Apache 2 y Nginx


SouRCe
 Share

Publicaciones recomendadas

nginx-vs-apache-banner.jpg

 

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.

 

Nginx y Apache 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_preforkmpm_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.

 

Configuración Centralizada vs Distribuida

 

Para los administradores, una de las diferencias más palpables entre ambos es si la configuración de los directorios se permite dentro de los propios directorios.

 

Apache incluye una opción para permitir la configuración adicional sobre una base de directorio a través de inspeccionar e interpretar directivas en expedientes escondidos dentro del propio contenido de los directorios. Estos archivos son conocidos como .htaccess.

 

Nginx no interpreta archivos .htaccess ni proporciona mecanismo alguno para la evaluación de la configuración por directorios fuera de la configuración principal de archivos. Puede que esto sea menos flexible que el modelo de Apache, pero también tiene sus ventajas.

 

La mejoría más notable respecto al sistema .htaccess de la configuración a nivel de directorio es la actuación mejorada. Con un setup típico de Apache que pueda permitir .htaccess en cualquier directorio, el servidor comprobará estos archivos en cada uno de los archivos padre llegando hasta el archivo solicitado para cada petición. Si se encuentran uno o más archivos durante esta búsqueda, éstos deben ser leídos e interpretados. Como no permite la invalidación de ficheros, Nginx puede responder a las peticiones más rápido mediante una simple búsqueda y lectura de archivos para cada petición (asumiendo que el archivo se encuentre en la estructura convencional de directorio).

 

Módulos

 

Nginx y Apache son extensibles a través de sistemas de módulos, pero el modo en que trabajan difiere de forma significante.

El sistema de módulos de Apache te permite cargar y descargar de forma dinámica módulos para satisfacer tus necesidades durante el tiempo en el que el servidor esté corriendo. El core de Apache siempre está activo, mientras que los módulos pueden estar encendidos o apagados, añadiendo o eliminando funcionalidad adicional y conectándose con el servidor principal.

 

Nginx también implementa un sistema de módulos pero es bastante diferente del sistema de Apache. En Nginx los módulos no son dinámicamente descargables, por lo que deben ser seleccionados y compilados en el núcleo del software.

Soporte, Compatibilidad, Ecosistema y Documentación

 

Apache ha adquirido popularidad por un largo tiempo ya, por lo que su soporte se ha vuelto bastante ubicuo. Hay una larga biblioteca de documentación de sus creadores así como de terceros disponible para el servidor y para escenarios de tareas que impliquen conectar Apache con otros softwares.

Nginx está experimentando un incremento en su soporte, ya que muchos usuarios lo acogen como su servidor base, pero aún tiene que actualizarse en algunas áreas importantes.

 

nginx-vs-apache_estadisticas.jpg

 

Usando Apache y Nginx juntos

 

Después de tratar los beneficios y limitaciones de Apache y Nginx, puede que tengas una mejor idea de qué servidor es el que más se adecua a tus necesidades. Sin embargo, muchos usuarios consideran que es posible medir los puntos fuertes de cada servidor a través de un uso conjunto de ambos.

La configuración convencional para esta colaboración es situar Nginx enfrente de Apache como un proxy invertido. Esto permitirá a Nginx manejar todas las peticiones de los clientes. Esto se beneficia de la velocidad de procesamiento de Nginx y su habilidad para manejar un elevado número de conexiones de forma concurrente.

 

Para el contenido estático, en lo que Nginx es excelente, los archivos se le proporcionarán al cliente de forma rápida y directa. En lo que respecta al contenido dinámico, por ejemplo archivos PHP, Nginx le pasará la petición a Apache, que podrá procesar los resultados y volver a la página solicitada. Entonces Nginx puede pasarle el contenido al cliente.

 

Este setup funciona bien para mucha gente porque permite a Nginx funcionar como una máquina de clasificación. Se encargará de todas las peticiones que pueda y pasará aquéllas para las que no tiene la capacidad innata de resolver. Mediante la reducción de las peticiones que se le solicitan al servidor Apache, puedes aliviar algunos de los bloqueos que ocurren cuando un proceso de Apache está ocupado.

Esta configuración también te permitirá prever mediante la adición de servidores de backend cuando sea necesario. Nginx puede ser configurado para pasar a un pool de servidores de forma fácil, incrementando la actuación y la resiliencia al fallo de la configuración.

Conclusión

 

Como puedes ver, tanto Apache como Nginx son poderosos, flexibles y capaces. Decidir qué servidor es el mejor para ti consiste en evaluar lo que necesitas y hacer pruebas para ver qué es lo que mejor se ajusta a tus necesidades.

 

 

Fuente: https://clouding.io/blog/apache-nginx/

  • Upvote 1
Enlace al comentario
Compartir en otros sitios web

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.

Conectar ahora
 Share

×
×
  • Crear nuevo...