Apache vs.Nginx: ¿Qué servidor web es la mejor opción?

Contenidos

Apache contra Nginx

Nginx y Apache combinados sirven a más del 50% de la web. Pero Apache ha experimentado un declive en los últimos años, a favor de Nginx. ¿Nginx es verdaderamente mejor y hay algún beneficio al utilizar Apache?

Nginx es más nuevo y más rápido

Nginx puede procesar múltiples conexiones dentro de un solo hilo de proceso

Nginx es mucho más ligero que Apache. Este es un obstáculo arraigado en el diseño: bajo el capó, Apache debe crear un nuevo hilo de procedimiento para cada conexión. Y aunque puede procesar 10 subprocesos a una velocidad comparable a Nginx, cuando se escala a cientos de conexiones simultáneas, Nginx toma la delantera decisiva.

Nginx funciona de manera distinto y puede procesar múltiples conexiones dentro de un solo hilo de procedimiento. Está diseñado para funcionar además como un proxy inverso simple, por lo que en lugar de traer la sobrecarga de un servidor web completo, simplemente está diseñado para mover bytes de datos de un lugar a otro. Nginx puede ser más del doble de rápido que Apache cuando ofrece contenido estático, y mucho menos intensivo en CPU cuando lo hace, lo que lo hace excelente para funcionar en sistemas de baja potencia.

A pesar de esto, esta velocidad solo importa cuando se ofrece contenido estático a muchos usuarios al mismo tiempo. Cuando comienza a ofrecer contenido dinámico, el cuello de botella se encuentra en otra parte, como en su motor PHP, su aplicación web o su base de datos.

Debido a que Nginx además es un proxy inverso, puede usarlo frente a otro servidor (inclusive Apache) específicamente para alojar contenido estático. Un ejemplo útil son las aplicaciones de nodo de renderizado del lado del servidor, donde las solicitudes HTTP a páginas dinámicas deben reenviarse a un servidor que ejecuta Express, pero los recursos estáticos (imágenes, hojas de estilo, etc.) se pueden atender desde Nginx. La sobrecarga al hacer esto es mínima y puede acelerar significativamente el contenido estático.

Apache es más configurable

Logotipo de Apache

Apache está más enfocado en ser un servidor web y tiene algunas características útiles como archivos de configuración basados ​​en directorios y hosts virtuales. Esto facilita la ejecución de varios sitios en el mismo servidor. A modo de ejemplo, puede agregar un bloque VirtualHost como este para /etc/httpd/conf/httpd.conf:

<VirtualHost 127.0.0.1:80>
  DocumentRoot /var/www/html
  ServerName www.firstsite.com
</VirtualHost>

Esto hará que Apache enrute todas las solicitudes a www.firstsite.com a una carpeta específica, que puede tener su propia configuración independiente de otros sitios que se ejecutan en el servidor. Esto se puede incrementar aún más con .htaccess archivos, que puede sobrescribir la configuración del servidor para una carpeta específica. A pesar de esto, ejecutar sitios con .htaccess files es más lento que utilizar la configuración global, y solo se recomienda en los casos en que desee permitir que otros usuarios modifiquen la configuración del servidor para un directorio sin tocar la configuración global (el hosting compartido es el principal ejemplo de esto).

Nginx además puede servir varios dominios desde un solo servidor y enrutarlos a sus propias carpetas, pero no es tan configurable, especialmente con una falta de funcionalidad equivalente a .htaccess. Pero, si tu De Verdad Si necesita ese tipo de funcionalidad, puede utilizar Nginx como un proxy inverso para tener acceso al contenido que se sirve en otro lugar, inclusive ejecutándose en otra instancia de Nginx o en varios contenedores Docker.

Apache además tiene un soporte de complementos mucho mejor, en forma de módulos que se puede cargar dinámicamente sin reiniciar el servidor. Nginx además admite módulos, pero solo la carga de módulos agregados recientemente, por lo que muchos módulos aún requieren que parche el binario.

¿Qué servidor debería seleccionar?

Pese a las deficiencias, ambos son servidores web decentes. Ambos son gratuitos y open source, aún cuando Nginx dispone de una versión paga llamada Nginx Plus que agrega un equilibrador de carga de software sobre Nginx open source. Ambos servidores son seguros, disponen buenas comunidades de soporte y son sencillas de configurar. Aunque Nginx gana en velocidad, ambos son comparables en el servicio de contenido dinámico.

Si no está seguro de cuál utilizar, elija Nginx. En general, si está ejecutando un sistema Unix, Nginx es una buena opción simplemente por su velocidad y facilidad de uso. Si necesita más configuración, especialmente si está ejecutando muchos sitios web desde el mismo servidor, Apache puede funcionar mejor.

Una cosa a prestar atención es que si está usando PHP, la configuración de Nginx es un poco distinto. Apache ejecuta PHP de forma nativa en el mismo procedimiento, comunicándose de forma directa con el motor PHP. Nginx lo ejecuta en un procedimiento separado (PHP-FPM) y se comunica con él como un proxy inverso. Ambos métodos son igual de rápidos, pero su configuración variará.

Nginx y Apache son totalmente compatibles con cualquier sistema Unix, incluido FreeBSD. Mientras que Nginx técnicamente tiene una versión que se ejecuta en Windows, no es el mejor. Apache es totalmente compatible con Windowsy, como tal, es el servidor web de referencia en esa plataforma.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.