Nginx vs Apache: ¿Cuál es el mejor servidor web?

Publicado: 2021-12-30

Si bien hay muchos tipos diferentes de software de servidor, a menudo reducirá los contendientes a Nginx vs Apache. Esto se debe a que ambos ofrecen el máximo rendimiento para muchas configuraciones de servidor diferentes y se adaptan mejor a ciertas aplicaciones que otras.

Aun así, querrá considerar cuál de estos tiene más sentido para sus necesidades. Hay algunas categorías diferentes que analizar, como la compatibilidad con el sistema operativo (SO), la seguridad, la documentación y (por supuesto) el rendimiento.

Para esta publicación, vamos a comparar Nginx vs Apache en varias áreas diferentes. Al final, resumiremos nuestros hallazgos y le daremos la información que necesita para elegir la opción correcta.

Introducción a Nginx y Apache

Antes de entrar en los detalles profundos de cada tipo de servidor, le daremos un resumen de Nginx y Apache. Una vez que lleguemos a la siguiente sección, aprenderá sobre algunos de los casos de uso de ambos y dónde podría verlos 'en la naturaleza'.

#Nginx vs #Apache: ¿Cuál es el servidor web adecuado para usted?
Haz clic para twittear

Nginx

El logotipo de Nginx.

En comparación con Apache, Nginx ( pronunciado "motor X" ) es relativamente nuevo en el mundo de la tecnología del lado del servidor. Sin embargo, el equipo de desarrollo se dio a la tarea de ampliar las limitaciones de los sistemas Apache.

Es una solución de código abierto que muchos usuarios consideran por su estabilidad y escalabilidad. Esto se debe (en parte) a su arquitectura basada en eventos, más de lo cual más adelante. De hecho, parte del objetivo del lanzamiento inicial de Nginx era poder manejar 10 000 conexiones a la vez. Esto es algo que era necesario en 2004, debido a la rápida expansión de la web en ese momento.

En general, a los administradores de sistemas y propietarios de sitios les gusta Nginx porque es eficaz, funciona muy bien con archivos estáticos y realiza las funciones de un equilibrador de carga y un 'proxy inverso'. Todos estos son relevantes para el tiempo de actividad, la velocidad y la seguridad.

apache

El logotipo del servidor Apache HTTPS.

Apache es algo así como el "viejo hombre" de la tecnología de servidores web. Es casi tan antiguo como la propia web: desde 1995, Apache ha sido el software central de miles, si no millones, de servidores.

Durante mucho tiempo, Apache ha sido una tecnología dominante entre los "administradores de sistemas". Hay muchas razones para esto, algunas relacionadas con el rendimiento y otras por la fuerza de la costumbre. Independientemente, los servidores Apache ven mucho uso donde las configuraciones importan.

Encontrará Apache como software preinstalado en todas las distribuciones de Linux, por lo que es una solución para ese sistema operativo. Sin embargo, aunque utiliza una arquitectura diferente a la de Nginx, aún ofrece potencia, escalabilidad y una documentación fantástica.

A muchos administradores de sistemas también les gusta la naturaleza personalizable de Apache, y cómo puede personalizar un servidor mediante la carga de varios módulos.

Los casos de uso generales para Nginx vs Apache

Es justo decir que Apache es un "aprendiz de todos los oficios" cuando se trata de servir sitios web. Sin embargo, esta es una bendición mixta. Sí, los servidores Apache pueden hacer casi todo lo que Nginx puede hacer, pero es a expensas de un código de menor rendimiento. La edad es un factor aquí.

Debido a que Apache llegó antes de que tuviéramos algunas de las aplicaciones más avanzadas para servidores web, el código base no podía hacer lo que necesitaba para servir a los sitios web modernos. Si bien estos problemas no son necesariamente motivo de preocupación ahora , una solución como Nginx funciona teniendo en cuenta la web moderna.

Como tal, encontrará que Apache es fantástico como un servidor fácil de configurar para aplicaciones como alojamiento compartido. Sus integraciones también lo ven como software de servidor de desarrollo local, como parte de la pila de Linux, Apache, MySQL y PHP (LAMP).

Los logotipos de todas las partes de una pila LAMP: Linux, Apache, MySQL y PHP.

Por el contrario, Nginx tiene una base de software más madura, con una mayor racionalización en comparación con Apache. Es bueno donde la estabilidad y la seguridad son elementos clave y fundamentales. Descubrirá que un servidor Nginx no es tan configurable como otros tipos, y esto significa que accederá menos a su núcleo.

Además, no es modular de la misma manera que Apache, lo que lo hace menos adecuado para una situación en la que necesita llevar a cabo la personalización del servidor.

Nginx vs Apache: qué tan popular es cada tipo de servidor

Durante mucho tiempo, el software de servidor fue similar a una carrera de un solo caballo. Apache funcionó como una fuerza dominante durante varios años y aún tiene una gran participación de mercado. Debido a esto, encontrará muchas integraciones y soporte para servidores Apache, junto con documentación de primer nivel.

Esto sirve como una razón más para elegir Apache y contribuye a su uso continuado. Sin embargo, Nginx es un software de servidor con una enorme cuota de mercado propia. Hay un aumento lento en el uso de Nginx con el tiempo, hasta el punto de que ahora es la tecnología de servidor web más dominante en el mercado, aunque no por mucho.

De cara al futuro, sugerimos que Apache verá menos uso con el tiempo porque Nginx proporciona mucho de lo que los administradores de sistemas necesitan en un servidor web. Sin embargo, LiteSpeed ​​Web Server y Cloudflare Server están en el horizonte y vienen con una base de usuarios en crecimiento y un fuerte respaldo. En unos años, esta comparación podría comparar a Nginx con uno de estos advenedizos más jóvenes.

Nginx vs Apache: un desglose técnico de las características y la funcionalidad

Las próximas secciones cubrirán una serie de aspectos técnicos de Nginx vs Apache. Si bien no podemos cubrir todo, le daremos suficiente tiempo a las áreas principales. En cualquier caso, debido a que estos representan los elementos centrales de ambos tipos de servidores, tendrá más que suficiente para elegir el software adecuado para usted.

1. Conexión y gestión de solicitudes

Es vital saber cómo un servidor maneja las conexiones porque esta es su 'moneda central'. Es discutible, pero cuando las personas buscan discutir los méritos relativos de Nginx vs Apache, el manejo de la conexión juega un papel importante en las percepciones.

Nginx

Nginx es 'asincrónico' y 'controlado por eventos', lo que significa que puede manejar múltiples solicitudes a la vez y procesarlas mientras haya recursos disponibles. Genera 'procesos de trabajo' para manejar las conexiones entrantes, de las cuales espera miles a la vez. Estos son los 'portadores de agua' para el resto del servidor.

Por ejemplo, cada proceso de trabajo escuchará los eventos y las conexiones del proceso y los agregará a un bucle continuo. A partir de ahí, el servidor puede procesar cada evento y eliminarlo cuando finalice. El flujo de un servidor Nginx proporciona una escalabilidad inherente, y la arquitectura asíncrona y sin bloqueo también sirve para eso.

apache

Por el contrario, Apache maneja los eventos de uno en uno a través de varios módulos de procesamiento múltiple (MPM). Un administrador de sistemas elegirá la arquitectura de conexión que mejor se adapte a la tarea, de las cuales hay algunas.

El módulo mpm_prefork es común. Esto genera procesos secundarios para cada evento y solo procesará una conexión a la vez. Si la cantidad de procesos es mayor que la cantidad de solicitudes, le resultará difícil distinguir la diferencia entre Nginx y Apache con respecto al rendimiento.

Sin embargo, este tipo de situación es rara y un servidor Apache verá una mayor cantidad de solicitudes que de procesos en muchas ocasiones. Además, este MPM no escala bien debido al uso de memoria.

Para aquellos que trabajan con PHP, mpm_prefork es la única forma segura de trabajar con el módulo de interpretación mod_php . A pesar de los inconvenientes, este será el MPM que elegirá un desarrollador de WordPress si tiene que implementarlo en un servidor Apache.

También verá los módulos mpm_worker y mpm_event . Estos realizan una operación similar y se escalan mejor debido a la forma en que pueden generar múltiples procesos por colección de subprocesos.

Este lote de MPM muestra cuán flexible puede ser Apache, a pesar de los inconvenientes de rendimiento en algunos casos.

Gestión de solicitudes de contenido estático frente a dinámico

Antes de continuar, debemos mencionar el contenido estático versus el dinámico para cada software de servidor. Leerá que Nginx no puede procesar contenido dinámico, lo que podría ser motivo de preocupación. De hecho, Nginx no procesará este tipo de contenido de forma nativa. En su lugar, lo enviará a un procesador externo (como un caché), luego esperará a que regrese antes de mover el contenido.

Para el desarrollo, un administrador de sistemas configurará una solución como Memcached para esto. Hay aspectos negativos de este enfoque, a saber, en el rendimiento. Sin embargo, los beneficios de los gastos generales de rendimiento para cada parte de la cadena niegan esto. Nginx no tiene que preocuparse por procesar estas solicitudes, por lo que puede concentrarse en sus áreas de responsabilidad con mayor eficiencia.

El sistema MPM de Apache le permite procesar tanto contenido estático como dinámico sin necesidad de otros módulos. Para el contenido dinámico, Apache incorpora un procesador de lenguaje en cada trabajador. Es un enfoque simple que funciona bien. También puede intercambiar módulos si necesita hacer un cambio.

2. Configuración del servidor

Una de las diferencias más evidentes entre Nginx y Apache es cómo configura cada servidor. Nginx utiliza un enfoque centralizado, lo que significa que un usuario no tiene forma de configurar un servidor fuera de un archivo principal. Si bien esto parece negativo, hay muchas ventajas:

  • El administrador del servidor es responsable de la seguridad global, lo que refuerza el acceso al servidor en su conjunto.
  • Un servidor centralizado tiene un mayor rendimiento que otros tipos. Esto se debe a que Nginx no necesitará manejar solicitudes para verificar los archivos de configuración en cada directorio.
  • Aquí hay un efecto colateral, ya que no habrá anulaciones para el servidor desde múltiples áreas, lo que reducirá aún más los tiempos de solicitud.

Una forma en que un laico sabrá que usa un servidor Apache es la presencia de archivos .htaccess . Estos son archivos de configuración que puede agregar casi en cualquier lugar de su servidor. Apache verificará cada elemento de una ruta en busca de un archivo .htaccess cuando se realice una solicitud.

Un archivo .htaccess que muestra algunas reglas de reescritura: comparación de Nginx y Apache

Esto es fantástico para los usuarios que desean personalizar su parte del servidor, pero podría significar un desastre si una de las directivas causa problemas de rendimiento o seguridad. Este enfoque descentralizado es una de las razones por las que verá que Apache se usa en alojamiento compartido. También es una de las razones por las que un sistema de gestión de contenidos (CMS) como WordPress ofrece un buen rendimiento en los servidores Apache.

3. Solicitar interpretación

Una diferencia importante entre Nginx y Apache que no parecerá evidente es cómo interpreta las solicitudes. En una palabra:

  • Nginx interpreta y asigna solicitudes mediante un identificador uniforme de recursos (URI) para cada componente.
  • Apache también puede usar URI para interpretar solicitudes, pero es más común ver una estructura de ruta basada en archivos.

Dado que Apache es ante todo un servidor web, utilizará los bloques <Directory> , <Files> o <Location> para definir los recursos. El concepto clave aquí es que todo lo que Apache 've' está relacionado con el servidor web, por lo que no hay ambigüedad dentro de la ruta del recurso. Piense en un árbol de documentos, y así es como Apache 'visualiza' el sistema de archivos del servidor.

Un archivo de configuración de Apache, que muestra la protección del sistema de archivos para directorios específicos - Comparación de Nginx vs Apache

Por el contrario, Nginx tiene muchos casos de uso, como un equilibrador de carga, un servidor proxy y un servidor web. Debido a esto, las solicitudes deben venir como un URI para que Nginx las procese. Por ejemplo, Nginx usa bloques de server y location : el primero interpreta el host solicitado y el segundo coincide con las porciones de URI después. Toda la solicitud se convierte en un URI.

Un archivo de configuración de Nginx - Comparación de Nginx vs Apache

En general, una URI es más flexible para Nginx, porque puede adaptarse a cualquier función que realice. Aun así, el sistema de Apache funciona, ya que sólo tiene que cumplir la función de servidor web.

Nginx vs Apache: cuál debes elegir para tu servidor en 2022

La respuesta general a ¿Qué software de servidor debo elegir? es simple: es cualquiera que ofrezca su proveedor de hosting. En muchos casos, no tendrá elección. Notamos que muchos servidores web siguen el mismo patrón que debe seguir si desea decidir entre Nginx y Apache:

  • Si desea ejecutar un servidor que necesita una configuración constante, o si desea brindarles a los usuarios una opción de configuración, Apache se ajustará a sus necesidades.
  • Sin embargo, si desea brindar un excelente rendimiento, una seguridad sólida como una roca y desea manejar las configuraciones en lugar de sus usuarios, Nginx es el camino a seguir.

Cuando se trata de rendimiento, Apache puede ocupar más memoria debido a su arquitectura inherente. Nginx va a ser mejor en situaciones de alto tráfico, especialmente si tiene que manejar mucho contenido estático.

Por lo tanto, si confía en el almacenamiento en caché para almacenar y entregar contenido, Nginx podría ser la mejor opción. Sin embargo, recuerde que Nginx no puede servir contenido dinámico, por lo que sufrirá un mayor impacto en el rendimiento según la eficiencia del proxy que utilice su servidor.

Ve arriba

Conclusión

Hay muchas áreas de WordPress (y la ejecución de un sitio web) que ofrecen una cantidad casi abrumadora de opciones. Esta es la naturaleza de la bestia. Sin embargo, no ayuda cuando necesita hacer que su sitio esté activo rápidamente.

#Nginx vs #Apache: ¿Cuál es el servidor web adecuado para usted?
Haz clic para twittear

Su elección del tipo de servidor es una decisión crucial y de primera línea que querrá tener especial cuidado. Nginx vs Apache es una comparación común porque ambos ofrecen beneficios en ciertas situaciones.

Nuestra opinión es que Nginx puede cubrir la mayoría de las bases con un mayor rendimiento, lo que lo convierte en la mejor opción para la mayoría de los usuarios de WordPress. Esta es la razón por la que muchos de los hosts populares de WordPress centrados en el rendimiento se han movido hacia una pila de servidores Nginx, incluidos Kinsta y Flywheel.

De todos modos, es seguro usar cualquier cosa que ofrezca su host si no tiene esa opción y la mayoría de los sitios de WordPress estarán totalmente bien con cualquiera de los servidores web.

¿Dónde te sientas en la valla entre Nginx y Apache? ¡Háganos saber en la sección de comentarios!

Guía gratuita

5 consejos esenciales para acelerar
Su sitio de WordPress

Reduzca su tiempo de carga hasta en un 50-80%
simplemente siguiendo simples consejos.

Descargar guía gratis