Elegir que servidor web ibas a utilizar era fácil, si disponías de equipos windows empleabas Internet Information Server (IIS) y si tenías servidores linux utilizabas apache. Ahora, sin embargo, hay más opciones, una de las principales alternativas es Nginx.
¿Qué es Nginx?
Nginx (pronunciado “engine X”) es un software de código abierto que trabaja como servidor web, puede ser configurado como servidor proxy inverso, es decir, se configura como front-end de otro servidor más lento, de manera que sirve en primer lugar el contenido estático reduciendo el tiempo de carga del servidor en back-end, puede también trabajar para balancear la carga de los servidores back-end o para almacenar en cache el contenido de un servidor más lentos.
Fue diseñado para ofrecer un mayor rendimiento y estabilidad. Además de sus capacidades como servidor HTTP, nginx también incluye servicios con acceso al Internet Message Protocol (IMAP) y al servidor Post Office Protocol (POP). En la actualidad se encuentra en 2ª posición justo por debajo del servidor web apache, alcanzando una cuota de uso de 28% según las estadísticas mostradas por la página netcraft, cerca de 447 millones de sitios web utilizan nginx como servicio web.
Historia
Igor Sysoev escribió originalmente NGINX para resolver el problema C10K, un término acuñado en 1999 para describir la dificultad que experimentaban los servidores web existentes al manejar grandes cantidades de conexiones (los 10K) concurrentes (la C). Con su arquitectura asincrónica impulsada por eventos, revolucionó la forma en que los servidores operan en contextos de alto rendimiento y se convirtió en el servidor web más rápido disponible.
Después de abrir el proyecto en 2004 y ver su uso crecer exponencialmente, Sysoev cofundó NGINX Inc, para apoyar el desarrollo continuo de NGINX y para comercializar NGINX Plus como un producto comercial con características adicionales diseñadas para clientes empresariales. En la actualidad, NGINX puede manejar cientos de miles de conexiones concurrentes, de ahí que empresas como facebook, netflix, wordpress, cloudflare y otros 100.000 sitios con mucha actividad implementen la tecnología de nginx en sus plataformas web.
NGINX como servidor web
El objetivo era crear el servidor web más rápido, y mantener esa excelencia sigue siendo un objetivo central del proyecto. NGINX siempre supera a Apache y otros servidores en puntos de referencia que miden el rendimiento del servidor web. Sin embargo, desde su lanzamiento original, los sitios web se han expandido de simples páginas HTML a contenido dinámico y multifacético.
NGINX ha crecido junto con él y ahora es compatible con todos los componentes de la Web moderna, incluidos WebSocket, HTTP/2 y transmisión de múltiples formatos de vídeo (HDS, HLS, RTMP y otros).
En la imagen se puede apreciar la capacidad de gestión de conexiones por parte del servidor web, en este caso se sirven varios items MP3 desde un único proceso que muestra el contenido a todas las conexiones que se estén establecidas o se establezcan en el futuro, mientas que otro proceso sirve items MP4. De este modo se ahorran recursos ya que el proceso puede servir varios elementos a todas las peticiones realizadas por parte de los clientes web.
NGINX como complemento
Aunque NGINX se hizo famoso como el servidor web más rápido, la arquitectura subyacente escalable resultó ser ideal para muchas tareas web más allá de servir contenido. Debido a que puede manejar un gran volumen de conexiones, se usa comúnmente como un proxy inverso y equilibrador de carga para administrar el tráfico entrante y distribuirlo a los servidores ascendentes más lentos, desde servidores de bases de datos heredados hasta microservicios.
NGINX también se coloca frecuentemente entre los clientes y un segundo servidor web, para servir como un terminador SSL/TLS o un acelerador web. Al actuar como intermediario, maneja de manera eficiente las tareas que pueden ralentizar su servidor web, como la negociación de SSL/TLS o la compresión y el almacenamiento en caché del contenido para mejorar el rendimiento. Los sitios dinámicos, creados con cualquier tipo de Node.js a PHP, suelen implementarlo como caché de contenido y proxy inverso para reducir la carga en los servidores de aplicaciones y hacer el uso más eficaz del hardware subyacente.
Nginx vs Apache
En una comparación rápida os muestro una conclusión sobre ambos. Apache y Nginx son rivales cercanos, y de hecho están espiritualmente mucho más cerca uno del otro que cualquiera de IIS. Los principales puntos fuertes son su velocidad de procesamiento de solicitudes y su poco peso. Apache no puede igualarlo en rendimiento pero está mucho más establecido, cuenta con el soporte organizacional adecuado (Apache Software Foundation) en lugar de confiar únicamente en la comunidad de usuarios, y una seguridad excelente, un conjunto de características mucho más grande (que incluye una gran cantidad de documentación). Y a diferencia de Nginx, Apache es totalmente compatible con Windows.
Sin embargo, una cosa a tener en cuenta al comparar Nginx vs. Apache es que no siempre tiene que ser una decisión cualquiera. Varios webmasters combinan los dos en una solución híbrida que aprovecha las fortalezas de cada uno. Por ejemplo, podría usar Nginx frente a Apache como un proxy inverso para servir contenido estático, para terminación SSL o en otras combinaciones y configuraciones, según sus requisitos.
Características | Nginx | Apache |
Sistemas operativos compatibles |
Linux, Unix, MacOS, Windows-parcial |
Linux, Unix, Windows, MacOS |
Soporte |
Solo comunidad de usuarios y Nginx Plus |
Soporte corporativo y comunidad de usuarios |
Costo y desarrollo |
Gratis, de código abierto |
Gratis, de código abierto |
Seguridad |
Muy buena |
Excelente |
Características y documentación |
Buena |
Excelente |
Actuación |
Excelente |
Buena |