Load Balancer vs Reverse Proxy — ¿Cuál es la Diferencia?
Introducción
Load Balancer y Reverse Proxy son dos componentes fundamentales de la infraestructura de red que a menudo se confunden. Ambos se sitúan entre clientes y servidores, ambos aceptan solicitudes y las reenvían. Sin embargo, sus objetivos y funcionalidades difieren.
En la práctica, muchas herramientas combinan ambos roles (Nginx, HAProxy), lo que intensifica aún más la confusión. Desglosemos esto en detalle.
Reverse Proxy — Qué Hace
Un Reverse Proxy es un servidor que acepta solicitudes de clientes en nombre de los servidores backend. El cliente no sabe con qué servidor específico se está comunicando.
Funciones Clave
Ocultamiento de infraestructura — los clientes solo ven la IP del proxy, no los servidores reales. Esto mejora la seguridad.
Terminación SSL — el proxy maneja SSL/TLS, descargando las operaciones criptográficas de los servidores backend.
Caché — almacenamiento de respuestas para solicitudes repetidas sin contactar al backend.
Compresión — compresión gzip/brotli de las respuestas para ahorrar ancho de banda.
Protección contra ataques — filtrado de solicitudes maliciosas, protección DDoS.
Reescritura de URL — modificación de las rutas de solicitud antes de reenviar al backend.
Inyección de encabezados — X-Real-IP, X-Forwarded-For y otros encabezados de servicio.
Load Balancer — Qué Hace
Un Load Balancer es un servidor que distribuye las solicitudes entrantes entre múltiples servidores backend para optimizar la carga y garantizar la tolerancia a fallos.
Funciones Clave
Distribución de carga — distribución equitativa de las solicitudes entre los servidores según un algoritmo especificado.
Verificación de estado (Health checking) — verificación continua de la disponibilidad de los servidores backend. Los servidores no disponibles se eliminan del pool.
Persistencia de sesión — vinculación de la sesión de un usuario a un solo servidor (sesiones pegajosas).
Tolerancia a fallos — redirección automática del tráfico en caso de fallo del servidor.
Escalabilidad — adición de nuevos servidores sin tiempo de inactividad.
Algoritmos de Balanceo
| Algoritmo | Descripción | Cuándo usar |
|---|---|---|
| Round Robin | Distribución secuencial | Servidores idénticos |
| Weighted Round Robin | Considera el peso del servidor | Servidores de capacidad variable |
| Least Connections | Al servidor con menos conexiones | Duraciones de solicitud variables |
| IP Hash | Basado en el hash de la IP del cliente | Se requiere persistencia de sesión |
| Least Response Time | Al servidor más rápido | La velocidad es crítica |
| Random | Selección aleatoria | Simplicidad |
Comparación
| Parámetro | Reverse Proxy | Load Balancer |
|---|---|---|
| Objetivo principal | Mediador entre cliente y servidor | Distribución de carga |
| Servidores backend | 1+ | 2+ (típicamente) |
| Terminación SSL | Sí | No necesariamente |
| Caché | Sí | No |
| Verificaciones de estado | Básicas | Avanzadas |
| Balanceo | Básico | Avanzado |
| Compresión | Sí | No |
| Reescritura de URL | Sí | No |
| L4 (TCP) | Algunos | Sí |
| L7 (HTTP) | Sí | Sí |
Cuándo se Superponen
En realidad, la mayoría de las herramientas combinan ambos roles:
Nginx — comenzó como un proxy inverso, pero admite balanceo de upstream con verificaciones de estado, round robin ponderado y menos conexiones.
HAProxy — comenzó como un balanceador de carga, pero admite terminación SSL, encabezados y ACL para enrutamiento.
Envoy — diseñado como un proxy universal con soporte completo para ambos roles más service mesh.
Traefik — configuración automática para contenedores, reverse proxy + load balancer.
Niveles de Balanceo
L4 (Capa de Transporte)
Balanceo a nivel TCP/UDP. El balanceador solo ve la IP y el puerto; no analiza el contenido de la solicitud. Rápido, pero sin enrutamiento dependiente del contenido.
L7 (Capa de Aplicación)
Balanceo a nivel HTTP. Analiza URL, encabezados, cookies. Permite el enrutamiento basado en el contenido de la solicitud. Más lento que L4, pero más flexible.
Ejemplo de la Diferencia
L4 ve: Conexión TCP al puerto 443 → distribuye según el algoritmo.
L7 ve: GET /api/users con Cookie: session=abc123 → enruta a un backend específico.
Aplicación en la Industria de los Proxies
Proveedores de Proxies
Los proveedores de proxies utilizan ambos componentes:
Reverse Proxy — una puerta de enlace frontal que acepta conexiones de clientes, maneja la autenticación y enruta al pool de IP apropiado.
Load Balancer — distribuye las solicitudes entre pools de servidores proxy en diferentes centros de datos para la tolerancia a fallos.
Infraestructura Propia
Al construir su propia granja de proxies:
1. Un Load Balancer en la entrada distribuye el tráfico entre los servidores proxy
2. Cada servidor proxy actúa como un proxy de reenvío a los sitios web de destino
3. Las verificaciones de estado verifican la disponibilidad de cada proxy
Qué Elegir
Solo necesita un Reverse Proxy si:
- Tiene un único servidor backend
- Se necesita terminación SSL y caché
- Quiere ocultar su infraestructura
Necesita un Load Balancer si:
- Múltiples servidores backend
- Se requiere tolerancia a fallos
- La distribución equitativa de la carga es crítica
Necesita ambos (que es lo más común):
- Use Nginx, HAProxy o Traefik — pueden hacer ambas cosas
Conclusión
Reverse Proxy y Load Balancer son dos aspectos de una única tarea: gestionar el tráfico entre clientes y servidores. Un Reverse Proxy se enfoca en funciones intermedias (SSL, caché, seguridad), mientras que un Load Balancer se enfoca en la distribución de carga y la tolerancia a fallos. En la infraestructura moderna, lo más común es utilizar una herramienta que combine ambos roles.