Nginx, uno de los servidores más utilizados.

José Verdugo

José Verdugo

Compartir

Nginx, uno de los servidores más utilizados.

Desde hace varios años atrás ha estado pegando fuerte el servidor Nginx, y en varias ocasiones lo he utilizado sorprendiéndome gratamente por ser fácil de configurar al compararlo con Apache. En éste artículo les hablaré de Nginx desde una mirada general con sus principales ventajas, usos más relevantes, y finalmente un ejemplo practico utilizando Nginx como servidor proxy que configure hace unos días atrás.

Ventajas

  • Conexiones Simultaneas: Su principal ventaja es que puede aceptar una alta cantidad de solicitudes utilizando pocos recursos, por lo mismo fue creado desde cero con el objetivo de atender al menos 10.000 conexiones simultaneas en un solo servidor. Aquí un casos de éxito de Dropbox donde cuenta como configuró sus servidores para un alto rendimiento y baja latencia y por otro lado como Netflix utiliza Ngnix.
  • Fácil de configurar: El archivo nginx/nginx.conf tiene un estilo similar a formato json, que al menos de mi punto de vista facilita su lectura. Además el archivo por defecto cuenta con cerca de 100 líneas donde la mayoría es comentario.

Principales usos.

Al revisar las funcionalidades con que cuenta Nginx, podemos destacar las siguientes:

  • Servidor de archivos estáticos: Esta es la funcionalidad más básica que permite publicar contenido estático.
  • Proxy: En pocas palabras significa dejarlo delante de otro servidor. Una posibilidad de uso es utilizarlo como firewall o para ocultar ciertas funcionalidades como por ejemplo la consola de administrador del servidor final. Otro escenario de uso es contar con otro servidor que resuelve el contenido dinámico y configurarlo como proxy para que el contenido estático lo resuelva Nginx y por otro lado el contenido dinámico lo resuelva otro server.
  • Balanceo de carga: Dependiendo de la cantidad de solicitudes puede derivar la carga entre dos o más servidores. Años atrás para éste escenario utilice HAProxy, espero para la próxima utilizar Nginx.

Servidor proxy para redireccionar a dos aplicaciones

Hace unos días atrás, necesitábamos un servidor proxy para redireccionar a dos aplicación dependiendo de su contexto. Les quiero compartir lo fácil que fue con Ngnix!!!.

Como antecedentes, utilice Ubuntu Xenial 16.04 en AWS t2.medium 2 CPU 4 RAM.

El primer objetivo era cambiar el puerto 8080 por el 80 de una aplicación que se encontraba en el server donde instalamos Nginx. A modo de ejemplo la idea era que al ingresar a http://example.com/app despliegue la aplicación que se encuentra en http://localhost:8080/app

El otro requerimiento era redireccionar todo lo restante a otro server llamado serverprincipal. Es decir si ingresamos a http://example.com/ despliegue http://serverprincipal.com.

El primer paso es actualizar la lista de paquetes de Ubuntu

sudo apt-get update

Luego instalar Nginx:

sudo apt-get install nginx 

Actualizar el archivo de configuraciones de nginx

sudo nano /etc/nginx/sites-available/default

En el archivo comentar la configuración raíz “/” y agregar las nuevas rutas. Para mi caso bastó con lo siguiente

location /app/ {
 	proxy_pass http://localhost:8080/app/;
 }
location / {
 	proxy_pass http://serverprincipal:8080/;
 }