X

¿Qué es Nginx? Características, Ventajas e Instalación

El mundo de los servidores web durante décadas siempre tuvo como cabecilla a Apache como referencia. Se usaba para instalarse en todo tipo de VPS y servidores físicos, sin embargo, en el año 2004 surgió un nuevo servidor web que lo cambiaría todo, hablamos de Nginx.

Desde su release inicial ya pasaron 15 años, y lo que ocurrió en el trayecto fue una verdadera revolución, Nginx destronó en gran parte a Apache sobre los sitios más populares del mundo. De hecho según estudios recientes de W3Techs, Nginx está en segundo lugar como el server más usado, con 41,8% siguiendo los pasos de Apache, que está en primer lugar con un 47% de mercado.

Netcraft por otro lado, arroja cifras estadísticas sobre otros estudios realizados, y afirma que en este año 2019, sobre un total de 230 millones de dominios, Nginx es usado por un 26% de ellos.

Las cifras son bastante claras, el servidor web que inicialmente trató de resolver el problema C10K, hoy en día es igual de popular que Apache, y por ello hoy dedicaremos un artículo entero a responder preguntas tales como: ¿Qué es Nginx? Y a ver sus características, ventajas principales, así como instalación en Ubuntu y CentOS Linux, las distros más populares.

¿Qué es Nginx?

Nginx en simples palabras es un servidor web, proxy inverso y balanceador de carga open source que hoy por hoy soporta a millones de páginas web en todo el mundo.

Su nombre se pronuncia «engine-ex», como motor en inglés, y es hoy por hoy el rival más cercano al clásico servidor Apache, el cual fue durante décadas la elección predilecta de muchos a la hora de instalar un servidor local o profesional en Internet.

Surgió en el año 2004 de la mano de su creador Igor Sysoev, y desde ese entonces no paró de crecer. Fue creado originalmente al problema C10K, es decir, que el servidor web lograra despachar 10 mil conexiones concurrentes de forma estable y segura.

Nginx fue concebido desde un principio para ser un servidor web escalable, rápido y eficiente, por eso hoy por hoy los sitios más populares del mundo lo usan para potenciar sus infraestructuras de servidores HTTP, de mailing, balanceadores de carga, servidores proxy, etc.

Entre sus usuarios más populares se encuentran Yahoo, Netflix, Cloudflare, WordPress.com, Adobe, Apple y muchos más.

En Infranetworking todos nuestros clientes que buscan alto rendimiento también pueden elegir usarlo al contratar un servidor Cloud VPS o Dedicado, algo que aprendimos en nuestra comparación Apache vs Nginx vs LiteSpeed, donde analizamos muchos aspectos de estos tres servidores.

¿Cómo funciona?

Nginx funciona de una forma no tradicional en comparación a los servidores web alternativos como Apache. Su arqyutectura se enfoca más que nada de forma asincrónica, basándose enteramente en eventos, donde cada petición que viene desde un navegador web se maneja utilizando un solo thread o hilo. Esto hace que use muy pocos recursos, sobre todo en cuanto a uso de memoria, gestándose así una plataforma para servir peticiones web liviana y muy rápida.

Este servidor web también trabaja en base a procesos maestros, donde éstos controlan multiples workers o procesos de trabajo, que son los que al final logran realizar el despacho de las requests que vienen desde los clientes (browsers – navegadores web), es un clásico escenario de modelo cliente servidor.

Bajo este esquema de arquitectura, es posible manejar los hilos de cada solicitud, que al final pasan todo a los workers como mencionamos antes, los cuales son los que hacen el trabajo «real» al final de cada petición. No es casualidad que gracias a su diseño escalable y alto rendimento, sea el elegido por grandes multinacionales como Google, Yahoo o Apple.

Características de Nginx

Veamos ahora cuáles son las características de Nginx que hacen de éste servidor web uno de los mejores de la actualidad, y la razón por la cual lo elegimos para casi todos nuestros proyectos en Infranetworking:

  • Servidor de archivos estáticos y dinámicos
  • Sirve como proxy inverso + servidor de cache
  • Soporte de autenticación HTTP
  • Soporta índices y autoindexado
  • Balanceo de carga inteligente
  • Tolerante ante fallos
  • Ofrece alta disponibilidad
  • Escalabilidad asegurada
  • Soporte para FastCGI y FastCGI Cache
  • Compatible con IPv4 e IPv6
  • Soporte HTTP, SPDY, QUICK y HTTP2
  • Soporte para HTTPS con certificados SSL
  • Permite hosts virtuales, así como basados en IPs
  • Streaming nativo con módulo RTMP
  • Streaming de MP4 y FLV
  • Acepta compresión Gzip y Brotli
  • Permite manejar más de 10 mil conexiones concurrentes.
  • Puede ser usado como Proxy para SMTP, POP3 e IMAP con soporte SSL

Instalación de Nginx

El proceso de instalación de Nginx es bastante fácil, pues al haberse vuelto tan popular está presente casi por defecto en casi todos los repositorios de las principales distribuciones Linux más populares de hoy en día. Veamos el procedimiento para las dos más usadas hoy en día: CentOS y Ubuntu Linux.

Instalar Nginx en CentOS

Nginx en CentOS 7.x se encuentra en el repo EPEL, por lo que primero antes de instalar Nginx, tendremos que habilitarlo.

sudo yum -y install epel-release

Una vez listo esto, el siguiente paso es actualizar dicho repo para dejarlo al día, y ver si hay actualizaciones disponibles:

yum -y update

Instalamos Nginx:

yum -y install nginx

Verificamos el estado de Nginx:

sudo systemctl status nginx

Deberías ver una salida como esta en tu pantalla:

nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)

Finalmente iniciamos Nginx con systemctl start:

systemctl start nginx

Configuramos el servidor para que se inicie automáticamente con el sistema:

systemctl enable nginx

Deberías ver una salida como esta:

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

Con estos pasos realizados desde tu servidor CentOS, Nginx ya debería estar respondiendo desde la IP local del servidor en http://IP.DEL.SERVIDOR o bien si has instalado Nginx en local, desde http://127.0.0.1

Muchas veces al intentar conectar remotamente a Nginx desde tu computadora, nos encontramos con que al cargar la dirección IP no funciona. Esto puede pasar por el firewall de CentOS que trae por defecto unas reglas bastante restrictivas.

Lo que haremos será añadir unas excepcione para que el servicio HTTP y HTTPS puedan funcionar sin problemas, copia y pega estos comandos:

firewall-cmd --permanent --add-service=http --add-service=https

Para aplicar los cambios, sólo debes recargar las reglas del firewall, tal como ves aquí:

firewall-cmd --reload

Ahora estamos en condiciones de probar Nginx desde la IP, o bien configurando un virtual host en su configuración desde nginx.conf.

Este es el tipo de instalación más común en los servidores Cloud VPS que ofrecemos.

Instalar Nginx en Ubuntu

Ubuntu es una de las distribuciones más populares del mundo, y su gestor de paquetes apt hace que la instalación y desinstalación de Nginx (o cualquier paquete) sea una tarea sumamente sencilla.

Primero, vamos a actualizar el índice de paquetes de Ubuntu:

sudo apt update

Y luego instalamos Nginx:

sudo apt install nginx

Al igual que hicimos en CentOS, en Ubuntu también hay que configurar un firewall antes de que podamos probar Nginx.

De esta forma permitiremos el acceso por los puertos que usa el servidor web.

Lo primero que haremos será obtener un listado de las configuraciones actuales que tiene el firewall, tipeando:

sudo ufw app list

La salida de este comando será algo como esto:

Nginx Full
Nginx HTTP
Nginx HTTPS

Como puedes ver, existen tres tipos de instalaciones posibles para Nginx en Ubuntu:

  • Nginx Full: Que abre Nginx de forma completa con los puertos 80 (HTTP) y 443 (HTTPS)
  • Nginx HTTP: Abre sólo el puerto 80 para tráfico HTTP (sin cifrado)
  • Nginx HTTPS: Abre el puerto 443 únicamente para páginas que usan certificados SSL/TLS

Si no tienes un certificado SSL, usar el perfil Nginx HTTP es el correcto, mientras que si usas ambos (recuerda que generalmente se redirige el tráfico desde el 80 hacia el 443 tras instalar un certificado SSL en Linux, por lo que ambos necesitan estar abiertos) lo ideal es usar Nginx Full.

En nuestro caso te recomendamos usar:

sudo ufw allow 'Nginx Full'

Verifica el estado del firewall:

sudo ufw status

Deberías poder visualizar la apertura del tráfico HTTP con «allow», y en la columna «from» Anywhere, que en español significa que el puerto está abierto para que fluyan las visitas directo a Nginx:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Las últimas versiones de Ubuntu, como la 18.04 suelen iniciar Nginx automáticamente, por lo que a diferencia de CentOS, no necesitas iniciarlo manualmente tras su instalación.

El último paso ahora es verificar que Nginx está funcionando, puedes hacer esto usando el siguiente comando:

systemctl status nginx

Resumen

Como hemos podido ver en este artículo, Nginx no es sólo un servidor web versátil, poderoso y fácil de instalar/configurar, también resulta una de las mejores alternativas a Apache, y un serio competidor del todo-poderoso servidor LiteSpeed. Una de sus únicas desventajas es que al día de hoy (a pesar de que cPanel está trabajando en ello) no es soportado por cPanel y WHM completamente para producción, algo que le ha quitado mucho mercado sin duda alguna.

Pero si tienes un servidor Ubuntu o CentOS (o cualquier otra distro, pues funciona en todas) sin panel de control podrás sacarle todo el jugo al instalarlo desde cero como te hemos mostrado en este tutorial. Luego de eso puedes contarnos cómo te fue.


➡️ Mira los mejores Servidores Cloud para Nginx

Rápidos, seguros y confiables en la Nube ☁️


 

Artículos relacionados