GNU/Linux >> Tutoriales Linux >  >> Linux

Apache vs Nginx:qué servidor web debe elegir

Apache vs Nginx es un tema bien merecido. Si no sabe qué servidor es la mejor solución para usted, busquemos la respuesta en este artículo.

Apache y Nginx son los servidores web más populares que impulsan Internet en la actualidad. Juntos, son responsables de atender más del 50% del tráfico en Internet. Pero Apache ha visto un declive en los últimos años, a favor de Nginx. En un alto nivel, ambas plataformas hacen lo mismo:alojar y servir contenido web. Ambos tienen capacidades únicas que se adaptan a los requisitos informáticos particulares, lo que hace que uno sea más adecuado que el otro en varios escenarios.

Apache:un servidor web rico en funciones

Apache es una aplicación de servidor web modular impulsada por procesos que crea un nuevo hilo con cada conexión simultánea. Es compatible con una serie de características. Muchos de ellos están compilados como módulos separados y amplían su funcionalidad principal. Los módulos de Apache pueden proporcionar todo, desde el soporte del lenguaje de programación del lado del servidor hasta el mecanismo de autenticación.

El servidor web Apache es una aplicación modular donde el administrador puede elegir la funcionalidad requerida e instalar diferentes módulos de acuerdo a la funcionalidad específica requerida. Todos los módulos se pueden compilar como Objetos compartidos dinámicos (DSO) que existe por separado del archivo principal de Apache. El enfoque DSO es muy recomendable, porque hace que la tarea de agregar/eliminar/actualizar módulos de la configuración de los servidores sea muy simple.

Otra característica esencial de la arquitectura de Apache son los filtros , que permiten que los módulos interactúen con el contenido creado por otros módulos. Esta interacción incluye encriptación, análisis de virus y compresión de contenido tanto estático como dinámico.

Apache suele ser elegido por los administradores por su flexibilidad, potencia y soporte generalizado.

Nginx:diseñado para rendimiento y escalabilidad

Nginx fue creado por un desarrollador de software ruso llamado Igor Sysoev como respuesta a un problema conocido como C10K:manejar 10 000 conexiones simultáneas de clientes a clientes. Fue escrito específicamente para abordar las limitaciones de rendimiento de los servidores web Apache. El servidor se creó por primera vez como una herramienta de escalado para el sitio web rambler.ru en 2002.

NGINX es un servidor web asíncrono de alto rendimiento. Utiliza una arquitectura basada en eventos para manejar cantidades masivas de conexiones. Ahora es más popular que Apache Web Server, debido a varias razones que veremos en este artículo.

Nginx se usó principalmente para servir archivos estáticos, pero hoy en día ha evolucionado como un servidor web completo que se ocupa de todo el espectro de tareas del servidor. En la actualidad, Nginx también se utiliza como proxy inverso, equilibrador de carga y para el almacenamiento en caché de HTTP. En algunos casos de uso, Nginx también sirve como acelerador web o terminador SSL/TLS.

Nginx a menudo es seleccionado por los administradores por su eficiencia de recursos y capacidad de respuesta bajo carga.

Apache versus Nginx:comparación detallada

Arquitectura

En el caso de Apache frente a Nginx, existe una diferencia central entre las arquitecturas de ambos servidores web en los que operan.

Sobre todo, la principal diferencia entre Apache y Nginx es cómo manejan la solicitud del cliente. Apache utiliza un enfoque basado en procesos y crea un nuevo hilo para cada solicitud. Mientras que NGINX usa una arquitectura basada en eventos para manejar múltiples solicitudes dentro de un hilo.

En Apache, un único subproceso está asociado con una sola conexión, mientras que un único subproceso en Nginx puede gestionar varias conexiones. Todos los procesos se colocan en un bucle de eventos junto con otras conexiones y se gestionan de forma asíncrona. Este proceso consume menos memoria, lo que aumenta el rendimiento.

Además de esto, debido a que el consumo de memoria de Nginx es menor, tiende a ser capaz de manejar más conexiones simultáneamente sin sobrecargar el servidor host. Si Apache se enfrenta a grandes volúmenes de solicitudes, puede acabar consumiendo toda la memoria del sistema y necesitando que los datos se almacenen en intercambio, lo que ralentiza significativamente el rendimiento.

Rendimiento:contenido estático/dinámico

El rendimiento de un servidor web se juzga principalmente por dos parámetros, es decir, su capacidad para manejar contenido estático y dinámico.

Los archivos estáticos no requieren procesamiento, por lo que esto es útil para medir los tiempos de respuesta de los servidores. Entonces, ¿qué tan rápido puede cada servidor entregar pequeños archivos estáticos? Cuando se trata de contenido estático, aquí es donde brilla Nginx, ya que los archivos se pueden entregar al cliente de forma directa y rápida. Nginx funciona 2,5 veces más rápido que Apache según una prueba comparativa realizada con hasta 1000 conexiones simultáneas. Al mismo tiempo, el consumo de RAM es menor. Para manejar la carga, Nginx usó un 5-6 % menos de memoria del sistema. La diferencia proviene principalmente de la arquitectura del servidor.

Para mostrar contenido dinámico, los resultados de la prueba revelaron que el rendimiento de Apache frente a Nginx para ambos fue exactamente el mismo.

Nginx no tiene la capacidad de procesar contenido dinámico de forma nativa. No está diseñado para el procesamiento nativo de contenido dinámico. Nginx tiene que pasar a un procesador externo para manejar PHP y otras solicitudes de contenido dinámico. Esto puede complicar un poco las cosas, especialmente cuando se trata de anticipar la cantidad de conexiones que se permitirán.

A diferencia de Ngnix, Apache puede procesar contenido dinámico incorporando un procesador de un lenguaje como PHP en cada una de sus instancias de trabajo. Esto le permite ejecutar contenido dinámico dentro del propio servidor web sin tener que depender de componentes externos.

Personalización

Apache presenta módulos cargados dinámicamente que se pueden utilizar siempre que sea necesario. El servidor admite muchos módulos diferentes, tanto oficiales como de terceros. Esto convierte a Apache en una plataforma muy personalizable que los usuarios pueden adaptar a sus necesidades. Los módulos se pueden usar para reescribir URL, autenticar clientes, iniciar sesión, almacenar en caché, fortalecer el servidor, comprimir, cifrar y más. Los módulos dinámicos pueden ampliar considerablemente la funcionalidad principal sin mucho trabajo adicional.

Los módulos de Nginx deben integrarse en el núcleo y no pueden cargarse dinámicamente. Para incluir módulos no estándar, los usuarios deben compilar su servidor desde la fuente.

La falta de esta capacidad en el servidor web Nginx, hace que Apache sea más flexible en este sentido.

Configuración

Además del archivo de configuración principal, Apache permite una configuración adicional por directorio a través de .htaccess archivos. Cambios realizados en .htaccess los archivos se aplican inmediatamente al sistema. Estos archivos incluyen todo, desde reglas de redirección hasta límites de memoria y mucho más, y permiten efectivamente la configuración descentralizada del servidor web. Además, esta arquitectura permite a los usuarios sin privilegios controlar ciertos aspectos de su sitio web sin otorgarles permiso para editar la configuración principal.

Esta flexibilidad, sin embargo, viene a expensas del rendimiento. Cada vez .htaccess los archivos están habilitados, Apache tiene que atravesar todo el árbol de directorios desde la URL o el archivo solicitado a través de todos los niveles superiores hasta el directorio raíz del servidor y luego cargarlos, para todas y cada una de las solicitudes.

Nginx no permite configuraciones adicionales. Su configuración es centralizada. Tienes un único archivo que gobierna todo el proceso, haciéndolo mucho más rápido en este sentido, aunque mucho menos flexible. La configuración central de Nginx es menos flexible que el concepto utilizado por Apache, pero ofrece una clara ventaja de seguridad:los cambios en la configuración del servidor web solo pueden ser realizados por usuarios que tengan permisos de root.

Dado que no existe una configuración a nivel de directorio en Nginx, los usuarios realizan todos los cambios de configuración escribiendo directivas en el archivo de configuración principal.

Soporte

Apache y Nginx son plataformas muy bien documentadas. Es muy poco probable que los administradores alguna vez se encuentren con un problema o tengan una pregunta cuya respuesta no se pueda encontrar en su documentación.

  • Documentación del servidor Apache HTTP
  • Documentación de Nginx

En cuanto al soporte del sistema operativo, Apache se ejecuta en todos los sistemas operativos, como Linux y UNIX, y tiene soporte completo para Microsoft Windows. Nginx también se ejecuta en varios sistemas modernos similares a Unix y es compatible con Windows, pero su rendimiento en Windows no es tan estable como en las plataformas UNIX. Por lo tanto, si desea ejecutar un servidor web de código abierto rico en funciones en Microsoft Windows, Apache es realmente la única opción lista para producción.

Uso de Apache y Nginx juntos

Sin embargo, una cosa a tener en cuenta al comparar Apache con Nginx es que no siempre tiene que ser una decisión de uno u otro. Muchos administradores combinan los dos en una solución híbrida que aprovecha las fortalezas de cada uno.

Apache y Nginx se pueden usar en conjunto para crear un servidor optimizado para cargas de trabajo. Puede usar Nginx frente a Apache como servidor proxy, lo que aprovecha la velocidad de procesamiento y la capacidad de Nginx para manejar grandes volúmenes de tráfico. Nginx procesa y sirve contenido estático mientras reenvía contenido dinámico a Apache (como se muestra en la imagen a continuación).

Nginx realiza el trabajo pesado relacionado con HTTP:sirve archivos estáticos, almacena contenido en caché y descarga conexiones HTTP lentas, para que el servidor Apache pueda ejecutar el código de la aplicación en un entorno seguro.

Conclusión

En el concurso Apache versus Nginx, la decisión puede ser difícil cuando se trata de cambiar de servidor o software de servidor. Decidir qué servidor es mejor para usted depende en gran medida de evaluar sus requisitos específicos y decidir la mejor opción. Tanto Apache como Nginx son servidores web de código abierto de alto rendimiento capaces de manejar diversas cargas de trabajo para satisfacer las necesidades de las demandas web modernas.

Si no necesita muchas funciones de servidor web, Nginx es el camino a seguir. Además, por velocidad y rendimiento, Nginx también es el claro ganador. Es ideal para sitios web de alto tráfico.

Nginx no puede competir contra Apache, rico en funciones, en muchos frentes, pero su estado asíncrono y su arquitectura ultrarrápida de subproceso único lo convierten en una opción inteligente sobre Apache.

Por otro lado, Apache puede ser el servidor web preferido en otros escenarios. Apache es más adecuado para entornos de alojamiento compartido y puede proporcionar un panel de control que facilita la realización de cambios en el servidor.

Por lo tanto, antes de elegir entre Apache y Nginx, debe analizar cuidadosamente sus requisitos, que debe querer que sirva su servidor web.


Linux
  1. Cómo configurar un servidor web Apache

  2. Ajuste del Keepalive del servidor web Apache

  3. Cómo instalar el servidor web Nginx en Linux

  4. LAMP vs. LEMP:consejos para elegir Apache o nginx para su servidor web

  5. Pop!_OS vs Ubuntu Linux:¿Cuál debería elegir? Este es el por qué

Cómo alojar un sitio web en el servidor web NGINX

Las 20 razones principales por las que debería elegir un servidor Linux

20 cosas esenciales que debe saber si está en el servidor web Nginx

Apache vs Nginx:¿Qué servidor web es el mejor para usted?

Cómo agregar compatibilidad con PHP-FPM en el servidor web Apache y Nginx en Ubuntu 18.04

¿Debo elegir un servidor Linux o Windows?