Un reverse proxy o proxy inverso protege tus servidores públicos actuando como intermediario: acepta las peticiones de los clientes, las reenvía a los servidores backend y entrega la respuesta al usuario.

¿Cómo funciona un proxy inverso?

En términos generales, un servidor proxy funciona como una interfaz de comunicación en la red, que recibe solicitudes y las reenvía en nombre del cliente a un servidor de destino. El proxy inverso se sitúa siempre entre los clientes (por ejemplo, los navegadores web) y los servidores backend (como los servidores web, de bases de datos o aplicaciones). Cada vez que se realiza una solicitud desde el cliente, entra en acción y decide si debe reenviarla y a qué servidor interno. Este proceso se lleva a cabo en cuatro pasos básicos:

  1. Recepción de la solicitud del cliente: el proxy inverso recibe peticiones HTTP, HTTPS u otros protocolos como FTP o WebSocket.
  2. Análisis de la solicitud: el proxy revisa si la petición es válida, si supone un riesgo de seguridad y si existe una versión almacenada en caché.
  3. Reenvío al servidor adecuado: cuando no es posible responder desde la caché, el proxy inverso envía la petición a uno de los servidores internos.
  4. Respuesta al cliente: el proxy inverso recibe la respuesta del servidor backend, la procesa si es necesario (por ejemplo, aplicando cifrado) y la devuelve al cliente que la solicitó.
Imagen: Esquema de la arquitectura de un proxy inverso
El proxy inverso (reverse proxy) y el servidor web se encuentran en una misma red interna.
Nota

Los proxy inversos suelen instalarse en una red privada o en una zona desmilitarizada (DMZ), y están protegidos por un cortafuegos.

¿En qué se diferencia de un proxy de reenvío?

Mientras que los proxy inversos, como ya hemos explicado, se colocan entre los clientes y los servidores backend, los forward proxies o proxies de reenvío se sitúan entre los clientes y el propio Internet. Un proxy de reenvío canaliza todas las solicitudes de los clientes y las reenvía a los servidores de destino utilizando su propia dirección de remitente. De este modo, las respuestas de los servidores también llegan primero al proxy, que luego las distribuye a los dispositivos clientes correspondientes. Esto permite mantener el anonimato de los usuarios, salvo en el caso de un proxy transparente. En resumen: mientras que un proxy de reenvío protege a los clientes de una red interna frente a amenazas externas, un proxy inverso protege a los servidores en una red pública y mejora su disponibilidad.

Así, los proxy inversos destacan por ofrecer ventajas claras para la infraestructura de servidores gracias a funciones como el balanceo de carga y la seguridad avanzada, mientras que los proxies de reenvío se centran en la protección y el anonimato de los clientes.

Imagen: Esquema de la arquitectura de un proxy de reenvío
A diferencia del proxy inverso (reverse proxy), el proxy de reenvío se encuentra en la misma red interna que los clientes.
Nota

Los proxies de reenvío se utilizan con frecuencia para controlar el acceso a Internet en redes corporativas. Otros usos habituales son la anonimización en servicios de VPN y la evasión de bloqueos geográficos.

Proxy inverso: casos de uso

La centralización de las solicitudes de los clientes permite controlar de forma precisa el tráfico entrante mediante un proxy inverso. Gracias a ello es posible, entre otras cosas, ofrecer varios servidores bajo la misma URL, distribuir las peticiones de manera equilibrada entre diferentes servidores y acelerar la entrega de datos mediante caché. A continuación se presentan los principales ámbitos de aplicación de un servidor proxy inverso.

Compute Engine
La solución IaaS ideal para tus cargas de trabajo
  • vCPU económico con núcleos dedicados
  • Flexible y sin periodo mínimo contractual
  • Soporte experto 24/7

Balanceo de carga

Con un proxy inverso situado delante de los servidores, es posible vincular una misma URL a varios sistemas dentro de la red interna. Esto permite distribuir las solicitudes entrantes entre varios servidores. Este balanceo de carga evita la sobrecarga de un único sistema y actúa como medida compensatoria en caso de fallo. Si un servidor deja de estar disponible por errores de hardware o software, el módulo de balanceo del proxy redirige automáticamente las solicitudes hacia los servidores restantes. De este modo, la disponibilidad de los servicios del servidor se mantiene incluso ante caídas.

Caché

Para acelerar la velocidad de los servicios del servidor, un proxy inverso puede incorporar una función de caché que permite almacenar temporalmente los contenidos más solicitados. Gracias a este mecanismo, el proxy es capaz de responder por sí mismo a peticiones repetidas, ya sea de manera parcial o completa.

Los contenidos estáticos, como imágenes u hojas de estilo en cascada (CSS), se guardan en la caché del proxy, reduciendo así la necesidad de recurrir al servidor backend y mejorando significativamente los tiempos de acceso a los servicios web. Sin embargo, en el caso de contenidos que cambian con frecuencia, no siempre se garantiza que la caché del proxy contenga la versión más reciente, lo que puede dar lugar a que los clientes reciban información desactualizada.

Medidas de protección y seguridad

Un proxy inverso actúa como una especie de escudo para los servidores backend y puede ofrecer diversas funciones de seguridad:

  • Protección DDoS: los proxy inversos pueden detectar y bloquear tráfico sospechoso o inusualmente alto en el marco de ataques DDoS, antes de que llegue a los servidores backend.
  • Web Application Firewall (WAF): muchos proxy inversos incluyen una WAF que permite filtrar solicitudes maliciosas como inyecciones SQL o cross site scripting (XSS).
  • Listas de acceso permitido/denegado (IP whitelisting y blacklisting): el proxy puede, en caso necesario, bloquear determinadas direcciones IP o permitir únicamente conexiones desde redes autorizadas.
  • Ocultamiento de los servidores backend: el proxy evita que las direcciones IP internas de los servidores backend sean visibles públicamente, lo que dificulta posibles ataques.

Cifrado

Para aliviar la carga de los servidores backend, los proxy inversos también pueden utilizarse para el cifrado. En este caso, el proxy descifra la solicitud SSL/TLS del cliente (por ejemplo, una conexión HTTPS), reenvía los datos ya descifrados a los servidores backend y envía la respuesta de nuevo cifrada al cliente. La comunicación interna puede realizarse tanto de forma no cifrada como cifrada.

Anonimización

Un proxy inverso también puede emplearse para la anonimización del tráfico, enmascarando las direcciones IP originales de los clientes o sustituyéndolas por sus propias direcciones IP. De este modo, se protege la privacidad de los clientes, ya que las direcciones IP reales no aparecen en los registros. Además, esto permite implementar balanceo de carga geográfico: las solicitudes pueden redirigirse al servidor más cercano en función de la ubicación geográfica del usuario o la usuaria.

Compresión

Con el software adecuado, un proxy inverso puede utilizarse para la compresión de datos entrantes y salientes. Un programa muy popular para la compresión de páginas web es gzip, que a menudo se emplea en combinación con los servidores web Apache o NGINX.

Consejo

En artículos separados te explicamos paso a paso cómo configurar un proxy inverso con NGINX o un proxy inverso con Apache.

¿Le ha resultado útil este artículo?
Ir al menú principal