coldwa.st
Todas las guíasProgramaciónWebDatosHerramientasBases de datosHaskellConceptosCabal y buildsToolchainCompiladorRendimientoEditor y HLS

Programación · Servidores · Redes

¿Qué es un proxy inverso?

Por ColdwastActualizado el 26 jun 20268 min de lectura#reverse-proxy#servers#networking
Cables Ethernet conectados a un panel de conmutador de red en un centro de datos
Un proxy inverso es la puerta de entrada única a tus servidores: cada petición llega al mismo sitio, que luego la reenvía al backend correcto entre bastidores.

En cuanto ejecutas más de una aplicación en un servidor —un sitio web, una API, quizá unos cuantos contenedores— te topas con un problema práctico: los visitantes llegan todos a los puertos 80 y 443, pero cada aplicación escucha en un sitio distinto. Un proxy inverso es la respuesta estándar. Esta guía explica qué es un proxy inverso, en qué se diferencia del proxy que quizá ya conoces y por qué casi todo despliegue en producción tiene uno.

La definición corta

Un proxy inverso es un servidor que se sitúa delante de uno o varios servidores backend, recibe cada petición entrante del cliente y la reenvía al backend adecuado, para luego devolver la respuesta de ese backend al cliente. Para el visitante, el proxy inverso es el sitio web: solo habla con él y nunca ve los servidores que hay detrás. La palabra «inverso» importa, y la siguiente sección explica por qué.

Proxy inverso vs proxy directo

Un proxy normal (directo) se sitúa delante de los clientes. Cuando tu navegador está configurado para usar uno, tus peticiones salen a través del proxy en tu nombre: actúa por quienes hacen las peticiones. Un proxy inverso es la imagen reflejada: se sitúa delante de los servidores y actúa en su nombre. Los clientes se conectan a él creyendo que es el servidor real, y él decide qué backend atiende realmente cada petición. La misma idea de intermediario, pero en el lado opuesto de la conversación.

Servidores en un bastidor de centro de datos iluminados con luces indicadoras azules y rojas
Detrás de un solo proxy inverso puede haber muchos servidores backend como estos. El proxy es la única máquina con la que habla el público; enruta cada petición al backend que debe atenderla.

Para qué se usa de verdad un proxy inverso

  • Enrutamiento por nombre de host o ruta: enviar api.example.com a tu API y example.com a tu sitio web, aunque ambos corran en la misma máquina.
  • Terminación TLS: gestionar los certificados HTTPS en un solo sitio para que cada backend hable HTTP simple internamente y tú manejes los certificados una sola vez.
  • Caché: almacenar y servir directamente las respuestas frecuentes, para no golpear el backend en cada petición.
  • Búfer y protección: absorber clientes lentos, aplicar límites y ocultar las direcciones reales de los backends tras un único punto de entrada público.

En la práctica, el enrutamiento y el TLS ya bastan para justificarlo: te permiten alojar varias aplicaciones en un solo VPS de forma limpia, con HTTPS, tras una única dirección.

Proxy inverso vs balanceador de carga

Estos conceptos se solapan, de ahí la confusión. Un balanceador de carga tiene una función concreta: repartir el tráfico entrante entre varios backends idénticos para que ninguno se sature. Un proxy inverso es el concepto más amplio —reenvía peticiones y puede hacer muchas cosas (enrutamiento, TLS, caché), y repartir la carga entre backends es una de ellas. Así que un balanceador de carga es, en esencia, un proxy inverso centrado en la tarea de balanceo. La mayoría de los proxies inversos modernos también pueden balancear carga, mientras que un balanceador dedicado quizá no haga mucho más.

Las herramientas comunes

Los proxies inversos más usados son Nginx, Caddy, HAProxy y Traefik. Nginx es la referencia de toda la vida y es extremadamente rápido sirviendo y haciendo de proxy. Caddy es popular porque obtiene y renueva los certificados HTTPS automáticamente, casi sin configuración. Traefik está pensado para entornos de contenedores y Kubernetes, donde descubre los servicios a medida que aparecen y desaparecen. HAProxy se prefiere cuando el balanceo de carga de alto volumen es la prioridad. Los proveedores de nube también ofrecen proxies inversos y balanceadores gestionados como servicio.

Un ejemplo mínimo

Una configuración de proxy inverso es sobre todo una lista corta de reglas. En Nginx, enviar las peticiones de un host a una aplicación que corre en local en el puerto 3000 se ve así:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}

Esa es toda la idea: las peticiones para example.com llegan a Nginx en el puerto 80, y Nginx las reenvía a tu aplicación en el puerto 3000, pasando el host original. Añade un bloque TLS y un segundo server para tu API, y una sola máquina sirve varias aplicaciones por HTTPS de forma limpia.

Las concesiones honestas

Un proxy inverso añade una pieza móvil más. Se convierte en el punto único por el que pasa cada petición, así que si cae, todo lo que hay detrás queda inaccesible —por eso en producción se ejecuta de forma fiable y a veces por duplicado. También añade algo de latencia y un archivo de configuración más que entender. Para una sola aplicación pequeña que ya escucha en el puerto 443, quizá no lo necesites. Pero en cuanto alojas más de un servicio, quieres gestionar el HTTPS en un solo sitio o piensas escalar, un proxy inverso se amortiza rápido.

Preguntas frecuentes

¿Qué es un proxy inverso en términos simples?

Un proxy inverso es un servidor que se coloca delante de tus servidores reales. Cada visitante se conecta a él en lugar de hablar directamente con tus aplicaciones, y él reenvía cada petición al backend correcto y luego devuelve su respuesta. Para el visitante parece el propio sitio web, mientras que los servidores reales quedan ocultos detrás.

¿Cuál es la diferencia entre un proxy inverso y un proxy directo?

Un proxy directo se sitúa delante de los clientes y hace las peticiones en su nombre: representa a quienes navegan. Un proxy inverso se sitúa delante de los servidores y los representa: los clientes se conectan a él como si fuera el servidor real, y él elige qué backend atiende cada petición. La misma idea de intermediario, pero en los extremos opuestos de la conexión.

¿Es un proxy inverso lo mismo que un balanceador de carga?

No exactamente. Un balanceador de carga reparte el tráfico entre varios backends idénticos para compartir la carga. Un proxy inverso es el concepto más amplio que reenvía peticiones y también puede hacer enrutamiento, TLS y caché, y el balanceo de carga es una de esas cosas. Así que un balanceador de carga es básicamente un proxy inverso centrado en la tarea de balanceo.

¿Necesito un proxy inverso?

Lo necesitas en cuanto alojas más de una aplicación en un servidor, quieres gestionar el HTTPS en un solo sitio o piensas escalar entre varios backends. Para una sola aplicación pequeña que ya sirve HTTPS en su propio puerto, puedes prescindir de él. En cuanto hay enrutamiento, certificados o varios servicios de por medio, un proxy inverso deja todo mucho más limpio.

Guía independiente y mantenida por la comunidad. coldwa.st es un sitio de recursos de programación; este artículo es un texto explicativo original e inédito sobre los proxies inversos. El fragmento de Nginx es configuración estándar mostrada a modo de ilustración; consulta la documentación de tu propio proxy y versión para los detalles.
Recomendado

Un servidor donde ejecutar tu proxy inverso

Ejecutar Nginx o Caddy como proxy inverso delante de tus aplicaciones requiere un servidor Linux real con control total: un VPS o servidor cloud donde seas dueño de los puertos 80 y 443. Infomaniak —proveedor suizo respetuoso con la privacidad— ofrece VPS y servidores cloud donde puedes instalar un proxy inverso y enrutar el tráfico a tantos backends como quieras.

Ver Infomaniak Cloud →

Enlace de afiliado — ayuda a mantener estas guías gratuitas.

Explora más explicaciones claras en nuestro índice de guías.