Reverse proxy · Nginx · Servidores
Un reverse proxy recibe las conexiones de los usuarios y decide a qué servicio interno enviarlas. Es una pieza fundamental cuando varios sitios, APIs o paneles comparten un mismo servidor o dirección pública.
- La diferencia entre proxy y reverse proxy.
- Cómo enruta por hostname o ruta.
- Qué significa terminar TLS en el proxy.
- Cómo se relaciona con Cloudflare Tunnel y balanceo.
Concepto
Un reverse proxy se coloca delante de tus aplicaciones
El cliente no se conecta directamente al puerto interno de la aplicación. Se conecta al reverse proxy, que recibe la petición y la reenvía al backend correspondiente.
Por ejemplo, Nginx puede escuchar HTTPS en el puerto 443 y enviar las peticiones hacia una aplicación Node.js que solo escucha en 127.0.0.1:3000.
https://app.example.com
:443
localhost:3000
Flujo
El usuario ve el proxy; el proxy conoce el backend
Cuando llega una petición, el proxy analiza datos como hostname, ruta, protocolo o reglas configuradas y selecciona un upstream. En Nginx, la directiva proxy_pass define el servidor al que debe enviarse una ubicación.
Esto desacopla la dirección pública del puerto real de la aplicación. Puedes cambiar el backend de :3000 a :4000 sin que el usuario cambie la URL pública.
Organización
Un mismo servidor puede publicar muchas aplicaciones
Un reverse proxy puede recibir varios hostnames y dirigir cada uno a un servicio distinto:
app.example.com→localhost:3000api.example.com→localhost:3001home.example.com→192.168.1.20:8123También puede enrutar por path: /api/ hacia un backend y / hacia otro.
HTTPS
El proxy puede centralizar certificados TLS
En lugar de configurar HTTPS en cada aplicación, el reverse proxy puede recibir HTTPS, gestionar certificados y luego comunicarse con los servicios internos mediante HTTP o HTTPS.
Esto simplifica renovaciones y permite aplicar políticas TLS de forma centralizada. Herramientas como Caddy y Traefik pueden automatizar gran parte del proceso de certificados; Nginx suele combinarse con ACME/Certbot u otras soluciones.
Si proxy y backend comparten el mismo host o una red controlada, algunas arquitecturas terminan TLS en el proxy. En redes no confiables o entre hosts, cifrar también el tramo interno puede ser apropiado.
Contexto
La aplicación debe saber que existe un proxy delante
El backend ve la conexión del reverse proxy, no necesariamente la conexión TCP original del usuario. Por eso se utilizan headers como X-Forwarded-For, X-Forwarded-Proto o Host para conservar contexto.
La aplicación debe confiar esos headers solo desde proxies conocidos. Aceptar valores arbitrarios enviados directamente por un cliente puede permitir falsificar información como la IP original.
Escalabilidad
Un reverse proxy también puede balancear tráfico
En vez de un solo backend, puedes tener varias instancias de una aplicación. El proxy distribuye peticiones entre ellas mediante el algoritmo configurado.
Esto permite aumentar capacidad o retirar temporalmente una instancia por mantenimiento. El balanceo requiere considerar sesiones, estado compartido, health checks y persistencia según la aplicación.
Rendimiento
Puede almacenar respuestas en caché
Algunos reverse proxies pueden guardar respuestas y servirlas sin consultar al backend en cada petición. Es útil para contenido cacheable y reduce carga sobre la aplicación.
La caché debe configurarse con cuidado: datos personalizados, autenticación o contenido dinámico no deberían almacenarse de forma que mezclen respuestas entre usuarios.
Frontera
Centraliza controles, pero no reemplaza la seguridad de la aplicación
En el proxy puedes aplicar límites de tamaño, rate limiting, restricciones por IP, headers de seguridad y reglas antes de que la petición llegue al backend.
Sin embargo, una vulnerabilidad lógica dentro de la aplicación sigue existiendo. El reverse proxy reduce y organiza la superficie expuesta, pero no sustituye autenticación, actualizaciones, validación de entradas ni permisos.
No confundir
Reverse proxy y Cloudflare Tunnel pueden trabajar juntos
Un reverse proxy decide a qué servicio interno enviar una petición. Cloudflare Tunnel crea una ruta entre Cloudflare y tu infraestructura sin abrir puertos inbound.
Puedes apuntar un Tunnel directamente a cada aplicación o apuntarlo a un reverse proxy local que luego distribuya el tráfico entre varios servicios.
Consulta Cloudflare Tunnel vs abrir puertos.
Opciones
Software habitual para reverse proxy
La elección depende de si priorizas archivos de configuración tradicionales, integración con Docker/Kubernetes, automatización de certificados, interfaz gráfica o balanceo avanzado.
