En este tema, exploraremos la configuración dinámica en NGINX Plus, una característica avanzada que permite realizar cambios en la configuración de NGINX sin necesidad de reiniciar el servidor. Esto es especialmente útil en entornos de producción donde el tiempo de inactividad debe minimizarse.
Conceptos Clave
- NGINX Plus API: Una interfaz RESTful que permite la gestión dinámica de la configuración.
- Upstreams Dinámicos: Permiten agregar, eliminar o modificar servidores en un grupo de upstreams sin reiniciar NGINX.
- Configuración de Rutas: Cambiar rutas y reglas de enrutamiento dinámicamente.
- Variables Dinámicas: Uso de variables que pueden ser modificadas en tiempo de ejecución.
NGINX Plus API
La NGINX Plus API es una herramienta poderosa que permite interactuar con NGINX de manera programática. A través de esta API, puedes realizar operaciones como agregar o eliminar servidores de un grupo de upstreams, cambiar configuraciones de balanceo de carga, y más.
Ejemplo de Uso de la API
Para interactuar con la API, primero debes habilitarla en tu configuración de NGINX:
En este ejemplo, la API está habilitada en el puerto 8080 y solo es accesible desde 127.0.0.1
.
Agregar un Servidor a un Upstream
Para agregar un servidor a un grupo de upstreams, puedes usar un comando curl
:
curl -X POST -d '{"server": "192.168.1.100:80"}' http://127.0.0.1:8080/api/6/http/upstreams/backend/servers
Este comando agrega el servidor 192.168.1.100:80
al grupo de upstreams llamado backend
.
Upstreams Dinámicos
Los upstreams dinámicos permiten modificar los servidores backend sin necesidad de reiniciar NGINX. Esto es crucial para mantener la alta disponibilidad y escalabilidad de tus aplicaciones.
Configuración de Upstreams Dinámicos
Primero, define un grupo de upstreams en tu configuración de NGINX:
http { upstream backend { zone backend 64k; } server { listen 80; location / { proxy_pass http://backend; } } }
En este ejemplo, el grupo de upstreams backend
está definido con una zona de memoria compartida de 64k.
Agregar y Eliminar Servidores
Para agregar un servidor:
curl -X POST -d '{"server": "192.168.1.101:80"}' http://127.0.0.1:8080/api/6/http/upstreams/backend/servers
Para eliminar un servidor:
Configuración de Rutas Dinámicas
Puedes cambiar las rutas y reglas de enrutamiento dinámicamente usando la API de NGINX Plus.
Ejemplo de Cambio de Ruta
Para cambiar una ruta, primero define una configuración básica:
Luego, usa la API para cambiar la ruta:
curl -X PATCH -d '{"proxy_pass": "http://new_backend"}' http://127.0.0.1:8080/api/6/http/servers/0/locations/0
Este comando cambia el proxy_pass
de la ruta /
a http://new_backend
.
Variables Dinámicas
Las variables dinámicas permiten modificar valores en tiempo de ejecución, lo que es útil para ajustar configuraciones sin reiniciar NGINX.
Ejemplo de Uso de Variables Dinámicas
Define una variable en tu configuración:
http { server { listen 80; set $dynamic_var "initial_value"; location / { proxy_pass http://backend; proxy_set_header X-Dynamic-Var $dynamic_var; } } }
Luego, usa la API para cambiar el valor de la variable:
Este comando cambia el valor de $dynamic_var
a new_value
.
Ejercicio Práctico
Ejercicio 1: Configuración Dinámica de Upstreams
- Objetivo: Agregar y eliminar servidores de un grupo de upstreams dinámicamente.
- Pasos:
- Habilita la API de NGINX Plus en tu configuración.
- Define un grupo de upstreams.
- Usa
curl
para agregar y eliminar servidores del grupo de upstreams.
Solución
-
Habilita la API:
http { server { listen 8080; location /api { api write=on; allow 127.0.0.1; deny all; } } }
-
Define un grupo de upstreams:
http { upstream backend { zone backend 64k; } server { listen 80; location / { proxy_pass http://backend; } } }
-
Agrega un servidor:
curl -X POST -d '{"server": "192.168.1.102:80"}' http://127.0.0.1:8080/api/6/http/upstreams/backend/servers
-
Elimina un servidor:
curl -X DELETE http://127.0.0.1:8080/api/6/http/upstreams/backend/servers/0
Conclusión
La configuración dinámica en NGINX Plus es una herramienta poderosa que permite realizar cambios en tiempo real sin necesidad de reiniciar el servidor. Esto es crucial para mantener la alta disponibilidad y escalabilidad de tus aplicaciones. En este tema, hemos cubierto cómo usar la NGINX Plus API para gestionar upstreams, rutas y variables dinámicamente. Con estos conocimientos, puedes optimizar y gestionar tu infraestructura de manera más eficiente y efectiva.
Curso de NGINX
Módulo 1: Introducción a NGINX
Módulo 2: NGINX como Servidor Web
- Sirviendo Contenido Estático
- Listados de Directorios
- Páginas de Error Personalizadas
- Registro y Formatos de Registro
Módulo 3: NGINX como Proxy Inverso
- Introducción al Proxy Inverso
- Configurando un Proxy Inverso
- Balanceo de Carga
- Verificaciones de Salud