¿Qué es un Proxy Inverso?
Un proxy inverso es un servidor que se sitúa entre los clientes y los servidores backend. Su función principal es redirigir las solicitudes de los clientes a uno o más servidores backend y devolver las respuestas de estos servidores a los clientes. A diferencia de un proxy directo, que se utiliza para ocultar la identidad del cliente, un proxy inverso oculta la identidad del servidor backend.
Beneficios del Proxy Inverso
- Balanceo de Carga: Distribuye las solicitudes entrantes entre varios servidores backend para evitar la sobrecarga de un solo servidor.
- Seguridad: Oculta la infraestructura del servidor backend, protegiéndolo de ataques directos.
- Caché: Almacena en caché las respuestas de los servidores backend para mejorar el rendimiento y reducir la carga.
- SSL/TLS: Maneja la terminación SSL/TLS, descargando esta tarea de los servidores backend.
- Compresión: Comprime las respuestas antes de enviarlas al cliente, reduciendo el tiempo de carga.
Cómo Funciona un Proxy Inverso en NGINX
NGINX es una opción popular para configurar un proxy inverso debido a su alto rendimiento y flexibilidad. En una configuración de proxy inverso, NGINX recibe las solicitudes del cliente y las reenvía a los servidores backend configurados. Luego, NGINX devuelve la respuesta del servidor backend al cliente.
Ejemplo Básico de Configuración de Proxy Inverso
A continuación, se muestra un ejemplo básico de configuración de un proxy inverso en NGINX:
http { upstream backend_servers { server backend1.example.com; server backend2.example.com; } server { listen 80; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Explicación del Código
- upstream backend_servers: Define un grupo de servidores backend. En este caso,
backend1.example.com
ybackend2.example.com
. - server: Configura un servidor virtual que escucha en el puerto 80.
- location /: Define una ubicación que coincide con todas las solicitudes.
- proxy_pass http://backend_servers: Redirige las solicitudes a los servidores backend definidos en el bloque
upstream
. - proxy_set_header: Configura los encabezados HTTP que se enviarán al servidor backend. Estos encabezados incluyen:
Host
: El nombre del host de la solicitud original.X-Real-IP
: La dirección IP del cliente.X-Forwarded-For
: Una lista de direcciones IP a través de las cuales ha pasado la solicitud.X-Forwarded-Proto
: El esquema de la solicitud (http o https).
Ejercicio Práctico
Ejercicio 1: Configuración Básica de Proxy Inverso
Objetivo: Configurar NGINX como un proxy inverso para redirigir las solicitudes a dos servidores backend.
Instrucciones:
- Instala NGINX en tu servidor local.
- Crea un archivo de configuración en
/etc/nginx/conf.d/reverse_proxy.conf
. - Copia el siguiente código en el archivo de configuración:
http { upstream backend_servers { server backend1.example.com; server backend2.example.com; } server { listen 80; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
- Guarda el archivo y reinicia NGINX con el comando
sudo systemctl restart nginx
.
Solución del Ejercicio
Si has seguido las instrucciones correctamente, NGINX debería estar configurado como un proxy inverso que redirige las solicitudes a los servidores backend backend1.example.com
y backend2.example.com
.
Conclusión
En esta lección, hemos aprendido qué es un proxy inverso y cómo configurarlo en NGINX. Un proxy inverso puede mejorar la seguridad, el rendimiento y la escalabilidad de tu infraestructura. En la próxima lección, profundizaremos en la configuración de un proxy inverso en NGINX, incluyendo técnicas avanzadas como el balanceo de carga y las verificaciones de salud.
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