GNU/Linux >> Tutoriales Linux >  >> Linux

NGINX vs Apache:elegir el mejor servidor web en 2022

Un servidor web es un software de computadora que sirve contenido web. También crea una conexión entre un servidor informático y el navegador web de un usuario, entregando archivos entre ellos.

Elegir el servidor web correcto es crucial al configurar un sitio web o iniciar un proyecto de VPS, ya que puede afectar significativamente el rendimiento y la seguridad de un sitio.

Si no está seguro de qué servidor web usar, considere Apache y NGINX – ambos son los servidores web más populares y son responsables de servir más de la mitad del tráfico en Internet.

Para ayudar a decidir con cuál empezar, repasaremos una comparación detallada de NGINX vs Apache.

NGINX frente a Apache:descripción general

Antes de comenzar a comparar Apache vs NGINX, exploremos las diferencias entre los servidores web y sus características generales.

Apache

El servidor Apache HTTP – comúnmente conocido como Apache o Apache HTTPD – es un software de servidor web gratuito y de código abierto. Procesa las solicitudes de los clientes y ofrece contenido web a través del Protocolo de transferencia de hipertexto (HTTP).

El servidor web Apache se lanzó en 1995 y desde entonces lo mantiene la Apache Software Foundation . También fue el servidor web dominante en la World Wide Web temprana.

Apache HTTP Server actualmente alimenta alrededor del 33,9% de los sitios web en todo el mundo y ocupa la posición número uno en participación de mercado como uno de los servidores web más antiguos.

El servidor web Apache admite muchos sistemas operativos (SO) como Microsoft Windows, OpenVMS y cualquier sistema operativo similar a Unix como Linux y macOS.

Además, el servidor web Apache también forma parte de la pila LAMP, una de las primeras pilas de software de código abierto para el desarrollo web. Como resultado, el servidor web también funciona bien con muchos sistemas de administración de contenido (CMS), lenguajes de programación y marcos web.

Apache es particularmente popular debido al poder y la flexibilidad que provienen de su sistema de módulos . Con los módulos de Apache, los usuarios pueden agregar o eliminar funciones fácilmente, modificando su servidor para satisfacer sus necesidades.

NGINX

NGINX – pronunciado como “Motor X ” – es uno de los servidores más confiables por su escalabilidad y velocidad. También es uno de los servidores web de más rápido crecimiento en la industria, habiendo alcanzado la posición número dos en participación de mercado.

Al igual que Apache, NGINX es de código abierto y de uso gratuito.

Igor Sysoev, el creador de NGINX, comenzó a desarrollar este software en 2002 para responder al problema de C10K. En ese entonces, muchos servidores web no podían manejar más de 10 000 conexiones simultáneamente.

El servidor web NGINX se lanzó con una arquitectura asíncrona y basada en eventos, lo que permite que muchas solicitudes se procesen simultáneamente.

NGINX es especialmente popular debido a su capacidad para crecer y aumentar el tráfico y ser fácil de escalar con un hardware mínimo. Además, es excelente para servir archivos estáticos rápidamente.

Además de utilizarse como servidor web, NGINX también se puede utilizar como equilibrador de carga para mejorar la eficiencia y disponibilidad de los recursos de un servidor. Además, puede funcionar como proxy inverso, lo que garantiza un flujo de tráfico fluido entre servidores y clientes.

NGINX es compatible con casi todos los sistemas operativos similares a Unix. Sin embargo, la instalación de NGINX en Windows puede generar algunas limitaciones de rendimiento, como la falta de escalabilidad y problemas de autenticación UDP.

Ahora que hemos repasado los conceptos básicos de Apache y NGINX, es hora de compararlos usando varios aspectos críticos importantes para los servidores web.

Arquitectura básica:manejo de conexiones

La arquitectura del servidor web es el diseño o mecanismo lógico que determina cómo un servidor web maneja las solicitudes, las conexiones y el tráfico web. Es uno de los criterios esenciales a tener en cuenta a la hora de elegir un servidor web.

Comparemos NGINX vs Apache en términos de arquitectura básica y cómo ambos software manejan las conexiones.

Apache

Apache sigue una arquitectura basada en procesos de forma predeterminada, lo que significa que crea un solo hilo para manejar cada solicitud de conexión.

La desventaja de la arquitectura basada en procesos es que Apache necesita crear muchos procesos cuando se trata de muchas solicitudes. Puede conducir a un gran consumo de recursos , lo que provoca problemas en el servidor, como la carga lenta de las páginas web y las interrupciones del sitio.

Afortunadamente, Apache proporciona varios módulos de procesamiento múltiple (MPM) que determinan cómo este servidor web de código abierto acepta y maneja las solicitudes HTTP, y los usuarios son libres de elegir qué MPM se adapta mejor a sus necesidades.

Hay tres MPM principales:

  • mpm_prefork – el prefork MPM no tiene subprocesos, lo que significa que cada proceso secundario solo puede manejar una solicitud a la vez. Sin embargo, su rendimiento se degrada inmediatamente después de que las solicitudes superan la cantidad de procesos, lo que dificulta que este MPM se escale de manera efectiva.
  • mpm_trabajador – cada proceso del trabajador MPM puede crear múltiples subprocesos, y cada subproceso también puede manejar una conexión. Esto permite que el sistema atienda múltiples solicitudes a la vez. Además, dado que los subprocesos necesitan menos recursos que los procesos, este MPM puede escalar mejor y consumir menos recursos que el MPM anterior a la bifurcación.
  • mpm_event – el evento MPM es similar al trabajador MPM, pero también está optimizado para manejar conexiones de mantenimiento. Funciona dejando de lado subprocesos dedicados para administrar conexiones de mantenimiento y asignar solicitudes activas a otros subprocesos. Este proceso ayuda a que el evento MPM no se ralentice debido a todas las solicitudes de mantenimiento. Como resultado, el servidor web Apache tiene los requisitos de recursos más bajos cuando se usa con este MPM.

Tenga en cuenta que solo puede cargar un MPM en su servidor en cualquier momento. Si su proyecto requiere estabilidad y compatibilidad, use el prefork MPM. Sin embargo, para los sitios web que necesitan más escalabilidad y diversidad, considere utilizar los MPM de trabajadores o eventos.

NGINX

Si bien muchos servidores web usan una arquitectura simple de subprocesos o basada en procesos, NGINX adopta un enfoque diferente al utilizar arquitectura asincrónica, sin bloqueos y basada en eventos. . Esto permite que el servidor web maneje múltiples conexiones dentro de un solo proceso.

NGINX tiene un proceso maestro que realiza operaciones privilegiadas, como la vinculación a puertos, la lectura y evaluación de archivos de configuración y la creación de varios procesos secundarios.

Aquí hay tres tipos de procesos secundarios NGINX :

  • Proceso del cargador de caché – puede cargar la memoria caché basada en disco en la zona de memoria. Este proceso tiene poca demanda de recursos ya que se ejecuta solo una vez, justo después de que se inicia NGINX.
  • Proceso del administrador de caché – tiene como objetivo mantener la cantidad de datos almacenados en caché dentro de los tamaños configurados al verificar el caché periódicamente y eliminar los datos a los que se accedió menos recientemente.
  • Proceso de trabajo – puede manejar cientos de miles de conexiones HTTP simultáneamente, lo que significa que no es necesario crear nuevos procesos o subprocesos para cada conexión. En su lugar, cada proceso de trabajo se ejecuta de forma independiente y contiene unidades más pequeñas llamadas conexiones de trabajo, y cada unidad es responsable de manejar los subprocesos de solicitud. Los procesos de trabajo también pueden comunicarse con servidores ascendentes, así como leer y escribir contenido en el disco.

La arquitectura basada en eventos de NGINX puede distribuir de manera efectiva las solicitudes de los clientes entre los procesos de trabajo, lo que hace que este servidor web funcione mejor que Apache en lo que respecta a la escalabilidad.

Dado que NGINX puede procesar miles de solicitudes sin dificultades, incluso en sistemas de bajo consumo, este servidor web es adecuado para sitios web con altos niveles de tráfico, como motores de búsqueda, sitios de comercio electrónico y servicios de almacenamiento en la nube. Además, muchas redes populares de entrega de contenido (CDN) como MaxCDN y Cloudflare también usan NGINX para la entrega de contenido.

Comparación de rendimiento:contenido estático y dinámico

El rendimiento de un servidor web generalmente está determinado por su capacidad para manejar contenido estático y dinámico.

Contenido estático es cualquier archivo web que permanece igual cada vez que se entrega a un usuario final y generalmente se almacena en un servidor CDN. Por lo tanto, rara vez cambia y no depende del comportamiento del usuario, lo que lo convierte en uno de los tipos de contenido más simples para transmitir a través de Internet. Algunos ejemplos de archivos estáticos incluyen una biblioteca JavaScript, archivos HTML y CSS e imágenes.

Contenido dinámico , sin embargo, es una página web o archivo que cambia en función de los intereses, características y preferencias del usuario. Este tipo de contenido no se verá igual para todos, ya que se genera cuando un usuario solicita una página. Algunos ejemplos de sitios con este tipo de contenido son las tiendas en línea y las plataformas de redes sociales.

Dado que NGINX y Apache vienen con diferentes formas de manejar solicitudes de contenido estático y dinámico, veamos qué servidor web funciona mejor en esta comparación de Apache vs NGINX.

Apache

Apache proporciona contenido estático mediante su enfoque tradicional basado en archivos:el rendimiento de esta operación es principalmente una función de los MPM mencionados anteriormente.

Apache también puede ejecutar contenido dinámico dentro del servidor web sin necesidad de depender de componentes externos. En su lugar, procesa contenido dinámico al integrar un procesador de lenguajes adecuados en cada una de sus instancias de trabajo, y los usuarios pueden activar este procesador a través de los módulos cargables dinámicamente de Apache.

NGINX

Cuando se trata de servir contenido estático, NGINX funciona más rápido que Apache ya que almacena en caché los archivos estáticos para que estén disponibles cuando se soliciten.

Sin embargo, NGINX no viene integrado con la capacidad de procesar contenido dinámico. NGINX debe pasar las solicitudes a un procesador externo como FastCGI Process Manager (PHP-FPM) para que la ejecución maneje y procese el contenido dinámico. Una vez que este servidor web reciba el contenido, transferirá los resultados al cliente.

Configuración a nivel de directorio para NGINX y Apache

Si desea otorgar a otro usuario control sobre algunos componentes de su sitio web, entonces es esencial elegir un servidor web que permita la configuración a nivel de directorio dentro de sus directorios de contenido.

En esta comparación NGINX vs Apache, veremos qué servidor web permite la configuración a nivel de directorio.

Apache

Apache admite configuraciones adicionales por directorio a través de archivos .htaccess.

El .htaccess permiten que los usuarios sin privilegios controlen aspectos específicos de su sitio web sin permitirles editar el archivo de configuración principal.

Es por eso que muchos proveedores de alojamiento compartido usan Apache para dar a sus clientes acceso a directorios específicos mientras conservan el control del archivo de configuración principal.

Apache también interpreta .htaccess archivos cada vez que se encuentran a lo largo de una ruta de solicitud, lo que significa que se pueden implementar inmediatamente sin recargar el servidor web.

Sin embargo, existen algunas desventajas al usar .htaccess archivos Uno de ellos es que puede afectar el rendimiento de su sitio ya que Apache carga cada .htaccess archivo para cada solicitud de documento. Esto puede acabar con los recursos, especialmente para sitios web con mucho tráfico.

Otra cosa a considerar antes de usar .htaccess archivos es que permitir que otros usuarios modifiquen la configuración del servidor podría dar lugar a errores de seguridad.

Por lo tanto, si no necesita dar acceso a otras partes a la configuración de su servidor, asegúrese de deshabilitar .htaccess archivos.

NGINX

A diferencia de Apache, NGINX no admite la configuración a nivel de directorio. Aunque esto puede parecer un inconveniente, funciona a favor de los usuarios, ya que ayuda a aumentar el rendimiento del sitio.

Dado que NGINX está diseñado para ser eficiente, no necesita buscar .htaccess archivos e interpretarlos, lo que le permite atender una solicitud más rápido que Apache.

NGINX mantiene su servidor seguro al no permitir configuraciones adicionales ya que solo alguien con permiso de root puede modificar la configuración de su servidor y sitio.

Módulos en Apache vs Módulos en NGINX

La mayoría de los servidores web vienen con un archivo de configuración estándar listo para usar. A veces, sin embargo, los desarrolladores web pueden desear incluir módulos para hacer la programación más conveniente o ampliar la funcionalidad del servidor web.

Aunque NGINX y Apache son extensibles a través de un sistema de módulos, la forma en que funcionan difiere considerablemente.

Apache

Apache es un servidor web personalizable que ofrece más de 50 módulos cargables dinámicamente oficiales , que se pueden utilizar siempre que los usuarios los necesiten. Además, es fácil encontrar otros módulos de terceros en Internet.

Si bien las funciones principales del servidor Apache siempre están disponibles, los módulos se pueden cargar y descargar para modificar algunas de las funciones principales de este servidor web.

Los módulos dinámicos de Apache pueden realizar varias tareas, como procesar contenido dinámico, establecer variables de entorno y reescribir direcciones URL.

Estos son algunos de los módulos de Apache más utilizados:

  • mod_headers – le permite controlar y personalizar encabezados de solicitud y respuesta HTTP en Apache.
  • mod_expires – permite a los usuarios definir intervalos de caducidad para diferentes tipos de contenido en los sitios web.
  • mod_authz_host – habilita el control de acceso y la autorización en función del nombre de host, la dirección IP o las características de la solicitud.
  • mod_mimo – ayuda a asignar metainformación de contenido con extensiones de nombre de archivo.
  • mod_alias – permite a los usuarios informar a los clientes que la URL solicitada es incorrecta.

Tenga en cuenta que Apache viene preconstruido con módulos y los carga en la memoria del servidor. Por lo tanto, asegúrese de deshabilitar las funciones que no necesita para reducir el consumo de recursos.

NGINX

NGINX ofrece más de 100 módulos de terceros para integrarse en el software principal. Los usuarios con una buena comprensión del lenguaje C también pueden crear módulos NGINX que se adapten a las necesidades de su proyecto.

Sin embargo, los módulos NGINX no se pueden cargar dinámicamente ya que deben compilarse dentro del propio software central. Para que los módulos se carguen dinámicamente, los usuarios deben optar por NGINX Plus.

Esto hace que NGINX sea menos flexible que Apache, lo que da como resultado una mejor seguridad ya que la integración de muchos módulos dinámicos puede presentar algunos riesgos de seguridad.

Seguridad con Apache y NGINX

Es crucial elegir un servidor web seguro y confiable que pueda mantener seguros los datos de su sitio web y que se actualice periódicamente con los últimos parches.

Apache

Apache Software Foundation está tratando activamente de eliminar cualquier problema de seguridad relacionado con su software para mantener seguro el servidor Apache HTTP. Los usuarios pueden suscribirse a la lista de correo de anuncios del servidor Apache para mantenerse informados sobre las últimas actualizaciones del equipo de desarrollo de software.

Apache también incluye algunos ajustes de configuración que pueden ayudar a manejar los ataques de denegación de servicio (DoS), como:

  • Tiempo de espera – define la cantidad de segundos que Apache esperará por eventos específicos antes de fallar una solicitud. Los sitios web que están sujetos a ataques DoS deben establecer este número en unos pocos segundos.
  • Solicitar tiempo de espera de lectura – cierra las conexiones de los clientes que no envían sus solicitudes lo suficientemente rápido.
  • KeepAliveTimeout – decide la cantidad de tiempo que el servidor Apache esperará y mantendrá la conexión abierta para una nueva solicitud.

Tenga en cuenta que aunque Apache está diseñado para ser seguro y estable, la seguridad de su servidor también depende de cómo configure este servidor. Por lo tanto, considere tomar algunas medidas de seguridad adicionales, como instalar un firewall de aplicaciones web (WAF).

NGINX

NGINX también ofrece varios controles de seguridad listos para usar. Uno de ellos es la limitación de velocidad, que reduce la tasa de solicitudes entrantes a un valor típico para clientes reales y ayuda a proteger su servidor de ataques DDoS.

La limitación de velocidad de NGINX también se usa para proteger los servidores de aplicaciones ascendentes de demasiadas solicitudes de usuarios a la vez.

Además de eso, los usuarios de NGINX pueden prevenir ataques DDoS al permitir o denegar el acceso según las direcciones IP de los clientes. Este acceso también puede estar limitado por contraseña, resultado de subsolicitud o ancho de banda.

Además, NGINX es compatible con la versión más reciente de la seguridad de la capa de transporte (TLS), que ofrece un cifrado confiable para los datos enviados a través de Internet.

Para obtener más funciones de seguridad, considere usar NGINX Plus. Con esta versión premium, obtendrá acceso a la función de inicio de sesión único (SSO), que le permite autenticarse de forma segura con múltiples sitios web y aplicaciones utilizando un conjunto de credenciales.

Además, los usuarios de NGINX pueden visitar el sitio web de este servidor de código abierto para encontrar más avisos de seguridad y noticias sobre las últimas actualizaciones.

Soporte de plataforma

Los nuevos en el mundo del desarrollo web deben asegurarse de que el servidor web que elijan les brinde ayuda y soporte. Esto permite recibir asistencia cuando se enfrenta a un problema relacionado con el software.

Apache

Apache ofrece una extensa documentación que cubre varios temas sobre este software.

También ofrece soporte comunitario por correo electrónico, lo que permite a los usuarios obtener ayuda de personas familiarizadas con Apache HTTPD.

Los usuarios también pueden hacer preguntas rápidas sobre Stack Overflow y #httpd canal en la red IRC de Freenode.

NGINX

Para ayudar a los usuarios a resolver cualquier problema de desarrollo, NGINX proporciona una lista de correo operada y moderada por la comunidad. Además de eso, ofrece un foro de soporte público para ayudar a sus usuarios.

Debido a la gran cantidad de usuarios de NGINX, también es fácil encontrar otros foros comunitarios donde los desarrolladores comparten cómo solucionar problemas técnicos.

NGINX también proporciona muchos recursos de aprendizaje para ayudar a los principiantes a aprender más sobre este software, como blogs, glosarios, documentación, libros electrónicos, seminarios web y hojas de datos.

Aparte de eso, los usuarios que usan NGINX Plus también pueden obtener soporte dedicado del equipo, listo para ayudar con la instalación y la implementación.

Elegir un servidor web

Habiendo pasado por las comparaciones entre NGINX y Apache, está claro que cada software tiene ventajas y desventajas. Por lo tanto, es fundamental conocer las necesidades antes de decidir entre NGINX o Apache.

Apache es adecuado para alojamiento compartido entornos. Ofrece acceso de root para modificar el archivo de configuración principal, lo que permite a los usuarios sin privilegios controlar varios aspectos del servidor.

La desventaja es que este software puede consumir mucha memoria del servidor .

En cuanto a NGINX, tiene mejor rendimiento que Apache al manejar solicitudes de contenido estático. También puede atender a muchos clientes a la vez durante una carga alta, lo que lo convierte en una excelente opción para un sitio con un gran volumen de tráfico.

Además, NGINX es multifuncional – los usuarios pueden usarlo como proxy inverso, equilibrador de carga y solución de almacenamiento en caché.

Sin embargo, este software no puede servir contenido dinámico de forma predeterminada y necesita enviar todas las solicitudes de contenido dinámico a un servidor de aplicaciones back-end.

Recuerde que hay muchos otros servidores web populares para elegir, que pueden tener más de lo que Apache y NGINX pueden ofrecerle específicamente. Algunos de ellos son Tornado ,Node.js y Tomcat.

¿Apache y NGINX pueden trabajar juntos?

Es posible ejecutar NGINX y Apache juntos y aprovechar las ventajas de cada servidor:NGINX por su rápida velocidad de procesamiento y Apache por sus potentes módulos.

La práctica común para usar ambos programas es colocar NGINX como un proxy inverso frente a Apache ya que puede manejar cientos de conexiones al mismo tiempo.

Como proxy front-end para Apache, NGINX manejará todas las solicitudes de los clientes. Por ejemplo, si recibe una solicitud de contenido estático, NGINX entregará los archivos directamente al cliente.

Como servidor proxy inverso para contenido dinámico, NGINX reenviará la solicitud a Apache, que luego la procesará y transferirá el contenido final al cliente a través de NGINX.

El uso de Apache y NGINX puede reducir algunos bloqueos que generalmente ocurren cuando un subproceso o proceso de Apache está ocupado, lo que ayuda a aumentar el rendimiento de su servidor .

Conclusión

Puede ser un desafío decidir entre Apache y NGINX, ya que ambos son poderosos a su manera. Por ejemplo, Apache proporciona una amplia gama de módulos, mientras que NGINX ofrece escalabilidad y velocidad.

La principal diferencia entre los servidores web NGINX y Apache es que NGINX tiene una arquitectura basada en eventos que maneja múltiples solicitudes dentro de un solo hilo, mientras que Apache está basado en procesos y crea un hilo para cada solicitud. Por lo tanto, permite que NGINX tenga un mejor rendimiento en general.

Cada software viene con sus ventajas y desventajas, por lo que decidir si usar NGINX o Apache dependerá completamente de las preferencias del usuario.

Recapitulemos cada aspecto que hemos comparado:

  • Arquitectura básica – Apache crea un solo hilo para manejar cada solicitud de conexión, mientras que un solo proceso NGINX puede encargarse simultáneamente de varias conexiones.
  • Rendimiento – NGINX funciona más rápido que Apache al proporcionar contenido estático, pero necesita la ayuda de otra pieza de software para procesar las solicitudes de contenido dinámico. Por otro lado, Apache puede manejar contenido dinámico internamente.
  • Configuración a nivel de directorio – Apache viene con .htaccess archivos, lo que permite a los usuarios realizar cambios en la configuración de su sitio sin editar la configuración del servidor principal. Mientras tanto, NGINX no admite la configuración a nivel de directorio.
  • Módulos – Los módulos de Apache se pueden cargar dinámicamente, mientras que los módulos de NGINX deben compilarse dentro del software principal.
  • Seguridad – tanto Apache como NGINX son seguros y confiables. También tienen varias herramientas de seguridad para proteger un sitio contra ataques DDoS.
  • Apoyo – Apache y NGINX ofrecen soporte comunitario y documentación para ayudar a los principiantes con cualquier problema.

En lugar de elegir NGINX o Apache, puede ser más eficiente utilizar ambos software para mejorar el rendimiento de su servidor:NGINX como servidor proxy inverso para manejar solicitudes de contenido estático y Apache como back-end para servir contenido dinámico.

Esperamos que este artículo lo haya ayudado a comprender qué son NGINX y Apache, las diferencias entre los dos y cuándo debe considerar usarlos.

Si tiene más preguntas sobre NGINX y Apache, déjenos un comentario a continuación.


Linux
  1. Cómo configurar un servidor web Apache

  2. cPanel es el mejor

  3. Ajuste del Keepalive del servidor web Apache

  4. Cómo instalar el servidor web Apache en Ubuntu

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

Cómo obtener el mejor rendimiento del servidor Nginx

Los mejores navegadores ligeros de código abierto para Linux en 2022

Los 10 mejores cachés web de Linux para un mejor rendimiento

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

Las mejores distribuciones de Linux en 2022