Internet, tal como la conocemos hoy, inició su conquista a principios de los años noventa. El 20 de septiembre de 1990, el primer sitio web del mundo se puso en línea en el centro de investigación nuclear CERN de Ginebra y anunció también el nacimiento de la World Wide Web. En principio, los sitios web no son más que documentos HTML. Para poder ofrecer a los visitantes varias páginas web diferentes, el anfitrión necesita un software de servidor. Éste procesa las peticiones y las analiza para luego devolver al navegador los documentos solicitados. Dos de los programas más populares de este tipo son NGINX y Apache. En esta comparativa, presentamos detalladamente los dos servidores web y sus características y mostramos cuál de ellos es más adecuado para cada propósito.
La tarea de un servidor web es establecer una conexión entre un servidor físico o en la nube y las páginas web almacenadas (o navegadores) de los internautas. El servidor de aplicaciones, por su parte, se encarga de hacer que las aplicaciones estén disponibles dentro de una red.
No, a diferencia del servidor web Apache, NGINX sólo admite la entrega de contenido estático. En cambio, el contenido dinámico se transmite a otro software.
Sí, funciona muy bien. En la práctica, lo más habitual es combinar NGINX como proxy inverso y uno o varios servidores Apache en el backend.
Índice de contenidos
1. apache: flexibilista popular
El servidor web de código abierto Apache lleva en el mercado desde 1995 y, según w3techs.com, es el más utilizado de todos. Debido a su larga historia, su extensa documentación y sus flexibles opciones de despliegue, el servidor web es muy popular entre los administradores. Sin embargo, su enorme cuota de mercado se debe sobre todo a que muchos sistemas (por ejemplo, CMS) funcionan con Apache desde el primer momento. Además, está preinstalado en todas las distribuciones importantes de Linux, como Red Hat, CentOS o Ubuntu.
Conviene saber: desde 1999, la Apache Software Foundation es responsable del desarrollo del servidor web.
El servidor web Apache se configura con la ayuda de un archivo .htaccess. Esto permite un alto grado de flexibilidad en el procesamiento de las peticiones entrantes. Por ejemplo, se pueden definir límites de memoria y restricciones de carga de archivos, establecer reglas de redirección o protección de directorios (htpasswd) o realizar diversas configuraciones de seguridad para el manejo de cookies.
Sin embargo, una de las mayores ventajas de Apache es, sin duda, que se puede asignar a cada nivel o directorio del árbol su propio archivo .htaccess con una configuración individual. Esto permite a los proveedores de alojamiento compartido, por ejemplo, ofrecer a sus clientes una opción de configuración para su sitio web en una misma máquina sin afectar a los demás usuarios. Si un usuario realiza una configuración para su entorno dedicado, la configuración global del servidor no se ve afectada.
1.1 Los módulos amplían la funcionalidad del servidor web
Gracias al sistema de módulos dinámicos (que también existe en forma de NGINX), la funcionalidad de Apache puede ampliarse adicionalmente. Puede seguir instalando los módulos incluso después de haber configurado y puesto en marcha el servidor web Apache, y activarlos o desactivarlos según sea necesario. Aquí encontrará una lista oficial de todos los módulos que forman parte de la distribución estándar de Apache.
Consejo: En las distribuciones Linux basadas en Debian, los módulos pueden activarse o desactivarse sin editar los archivos de configuración mediante los comandos a2enmod y a2dismod .
1.2 NGINX vs Apache: El sufrimiento con el rendimiento
.Uno de los principales puntos débiles de Apache es su rendimiento. Aunque el servidor web sigue funcionando de forma fiable y estable para sitios web pequeños, flaquea regularmente con un número creciente de peticiones simultáneas. Esto se debe principalmente al hecho de que se inicia un proceso independiente para cada conexión abierta al servidor web, lo que ocupa memoria de trabajo. Esto significa que cientos o miles de peticiones paralelas dan lugar lógicamente a otros tantos procesos. Estos aumentan drásticamente los tiempos de carga de las páginas y, en el peor de los casos, pueden llegar a paralizar por completo el servidor web.
El servidor web Apache se ha mejorado constantemente con el tiempo y se ha optimizado su rendimiento. Sin embargo, no puede seguir el ritmo de un NGINX «out-of-the-box».
2 NGINX: Ligero y de alto rendimiento
NGINX no salió al mercado hasta 2004 y se desarrolló desde el principio centrándose en el rendimiento, el servidor central y las funciones proxy. El servidor web ofrece ventajas decisivas sobre Apache, especialmente en sistemas limitados, porque se basa en una arquitectura asíncrona basada en eventos. Esto significa que no se inicia un proceso independiente para cada conexión, sino que incluso pueden gestionarse varios miles de conexiones por proceso. De este modo, NGINX es capaz de gestionar un elevado número de peticiones simultáneas sin perder velocidad ni estabilidad. El consumo de recursos se mantiene relativamente constante incluso durante los picos de carga, lo que significa que las páginas de rendimiento intensivo con un gran número de accesos pueden entregarse incluso con un hardware limitado (por ejemplo, en una Raspberry Pi).
2.1 No se admiten contenidos dinámicos
NGINX también puede ampliarse mediante módulos. Sin embargo, éstos deben compilarse en el sistema, ya que la carga dinámica no es posible como con Apache. Además, a diferencia de Apache, NGINX sólo soporta la entrega de contenido estático, como imágenes, hojas de estilo CSS o JavaScript, y tampoco ofrece la posibilidad de integrar los intérpretes correspondientes mediante módulos. Para contenidos dinámicos (por ejemplo, scripts PHP, Python o Perl), las peticiones se pasan a otro software (es decir, en el caso de PHP, al intérprete correspondiente).
Además, no se admiten ajustes de configuración a nivel de directorio (a través de .htaccess), lo que hace que la configuración de un servidor web NGINX sea, en general, algo más compleja que con Apache. Sin embargo, esto sólo importa si desea ocuparse en detalle de la administración del servidor. Los proveedores de alojamiento que tienen NGINX en su cartera suelen disponer de los módulos adecuados para las tareas habituales.
3 NGINX y Apache como red
Para beneficiarse de las ventajas de ambos mundos, también puede utilizar NGINX y Apache en combinación. Por ejemplo, mientras que NGINX es especialmente adecuado como proxy inverso, Apache se utiliza principalmente como servidor backend debido a su gestión de contenidos dinámicos.
En la práctica, el servidor NGINX se conecta delante de uno o (como equilibrador de carga) varios servidores Apache. Por tanto, las conexiones entrantes van primero al NGINX, que se encarga de entregar el contenido estático. En cambio, para los contenidos dinámicos, la solicitud pasa al servidor Apache, que también puede recurrir a su archivo .htaccess en este contexto.
Conclusión: ¿Apache o NGINX?
No existe una respuesta general a la pregunta de qué servidor web es mejor. Porque aunque NGINX está muy por delante de Apache en términos de rendimiento, este último tiene ventaja cuando se trata de manejar contenido dinámico. Al final, la decisión siempre depende de los requisitos individuales de su proyecto web. En la práctica, muchos usuarios también se apoyan en una red para beneficiarse de los puntos fuertes de ambos servidores web.
Es bueno saberlo: La comunidad de Internet «Stack Overflow» es un buen lugar al que acudir para desarrolladores y administradores. Porque allí no sólo encontrarás respuestas a la mayoría de las preguntas sobre el tema de los servidores web, sino también numerosas instrucciones, tutoriales y notas de soporte sobre la configuración y el uso de Apache, NGINX y sus alternativas. Entre ellas se encuentran, por ejemplo, el servidor web gratuito Lighttpd o el de código abierto con capacidad HTTP / 2 Caddy.
Las ventajas y desventajas de los dos servidores web también se resumen en el siguiente vídeo: