¿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

  1. Balanceo de Carga: Distribuye las solicitudes entrantes entre varios servidores backend para evitar la sobrecarga de un solo servidor.
  2. Seguridad: Oculta la infraestructura del servidor backend, protegiéndolo de ataques directos.
  3. Caché: Almacena en caché las respuestas de los servidores backend para mejorar el rendimiento y reducir la carga.
  4. SSL/TLS: Maneja la terminación SSL/TLS, descargando esta tarea de los servidores backend.
  5. 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 y backend2.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:

  1. Instala NGINX en tu servidor local.
  2. Crea un archivo de configuración en /etc/nginx/conf.d/reverse_proxy.conf.
  3. 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;
        }
    }
}
  1. 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.

© Copyright 2024. Todos los derechos reservados