Un reverse proxy o proxy inverso protege tus se­r­vi­do­res públicos actuando como in­te­r­me­dia­rio: acepta las pe­ti­cio­nes de los clientes, las reenvía a los se­r­vi­do­res 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 co­mu­ni­ca­ción en la red, que recibe so­li­ci­tu­des 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 na­ve­ga­do­res web) y los se­r­vi­do­res backend (como los se­r­vi­do­res web, de bases de datos o apli­ca­cio­nes). Cada vez que se realiza una solicitud desde el cliente, entra en acción y decide si debe re­en­viar­la 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 pe­ti­cio­nes HTTP, HTTPS u otros pro­to­co­los 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 al­ma­ce­na­da 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 se­r­vi­do­res 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 en­cue­n­tran en una misma red interna.
Nota

Los proxy inversos suelen in­s­ta­lar­se en una red privada o en una zona de­s­mi­li­ta­ri­za­da (DMZ), y están pro­te­gi­dos por un co­r­ta­fue­gos.

¿En qué se di­fe­re­n­cia de un proxy de reenvío?

Mientras que los proxy inversos, como ya hemos explicado, se colocan entre los clientes y los se­r­vi­do­res 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 so­li­ci­tu­des de los clientes y las reenvía a los se­r­vi­do­res de destino uti­li­za­n­do su propia dirección de remitente. De este modo, las re­s­pue­s­tas de los se­r­vi­do­res también llegan primero al proxy, que luego las di­s­tri­bu­ye a los di­s­po­si­ti­vos clientes co­rre­s­po­n­die­n­tes. Esto permite mantener el anonimato de los usuarios, salvo en el caso de un proxy tra­n­s­pa­re­n­te. 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 se­r­vi­do­res en una red pública y mejora su di­s­po­ni­bi­li­dad.

Así, los proxy inversos destacan por ofrecer ventajas claras para la in­frae­s­tru­c­tu­ra de se­r­vi­do­res gracias a funciones como el balanceo de carga y la seguridad avanzada, mientras que los proxies de reenvío se centran en la pro­te­c­ción y el anonimato de los clientes.

Imagen: Esquema de la arquitectura de un proxy de reenvío
A di­fe­re­n­cia 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 fre­cue­n­cia para controlar el acceso a Internet en redes co­r­po­ra­ti­vas. Otros usos ha­bi­tua­les son la ano­ni­mi­za­ción en servicios de VPN y la evasión de bloqueos geo­grá­fi­cos.

Proxy inverso: casos de uso

La ce­n­tra­li­za­ción de las so­li­ci­tu­des 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 se­r­vi­do­res bajo la misma URL, di­s­tri­buir las pe­ti­cio­nes de manera equi­li­bra­da entre di­fe­re­n­tes se­r­vi­do­res y acelerar la entrega de datos mediante caché. A co­n­ti­nua­ción se presentan los pri­n­ci­pa­les ámbitos de apli­ca­ción de un servidor proxy inverso.

Balanceo de carga

Con un proxy inverso situado delante de los se­r­vi­do­res, es posible vincular una misma URL a varios sistemas dentro de la red interna. Esto permite di­s­tri­buir las so­li­ci­tu­des entrantes entre varios se­r­vi­do­res. Este balanceo de carga evita la so­bre­ca­r­ga de un único sistema y actúa como medida co­m­pe­n­sa­to­ria en caso de fallo. Si un servidor deja de estar di­s­po­ni­ble por errores de hardware o software, el módulo de balanceo del proxy redirige au­to­má­ti­ca­me­n­te las so­li­ci­tu­des hacia los se­r­vi­do­res restantes. De este modo, la di­s­po­ni­bi­li­dad 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 in­co­r­po­rar una función de caché que permite almacenar te­m­po­ra­l­me­n­te los co­n­te­ni­dos más so­li­ci­ta­dos. Gracias a este mecanismo, el proxy es capaz de responder por sí mismo a pe­ti­cio­nes repetidas, ya sea de manera parcial o completa.

Los co­n­te­ni­dos estáticos, como imágenes u hojas de estilo en cascada (CSS), se guardan en la caché del proxy, re­du­cie­n­do así la necesidad de recurrir al servidor backend y mejorando si­g­ni­fi­ca­ti­va­me­n­te los tiempos de acceso a los servicios web. Sin embargo, en el caso de co­n­te­ni­dos que cambian con fre­cue­n­cia, 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 in­fo­r­ma­ción des­ac­tua­li­za­da.

Medidas de pro­te­c­ción y seguridad

Un proxy inverso actúa como una especie de escudo para los se­r­vi­do­res backend y puede ofrecer diversas funciones de seguridad:

  • Pro­te­c­ción DDoS: los proxy inversos pueden detectar y bloquear tráfico so­s­pe­cho­so o inu­sua­l­me­n­te alto en el marco de ataques DDoS, antes de que llegue a los se­r­vi­do­res backend.
  • Web Ap­pli­ca­tion Firewall (WAF): muchos proxy inversos incluyen una WAF que permite filtrar so­li­ci­tu­des ma­li­cio­sas como in­ye­c­cio­nes SQL o cross site scripting (XSS).
  • Listas de acceso permitido/denegado (IP whi­te­li­s­ti­ng y bla­c­kli­s­ti­ng): el proxy puede, en caso necesario, bloquear de­te­r­mi­na­das di­re­c­cio­nes IP o permitir úni­ca­me­n­te co­ne­xio­nes desde redes au­to­ri­za­das.
  • Ocu­l­ta­mie­n­to de los se­r­vi­do­res backend: el proxy evita que las di­re­c­cio­nes IP internas de los se­r­vi­do­res backend sean visibles pú­bli­ca­me­n­te, lo que dificulta posibles ataques.

Cifrado

Para aliviar la carga de los se­r­vi­do­res backend, los proxy inversos también pueden uti­li­zar­se 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 de­s­ci­fra­dos a los se­r­vi­do­res backend y envía la respuesta de nuevo cifrada al cliente. La co­mu­ni­ca­ción interna puede rea­li­zar­se tanto de forma no cifrada como cifrada.

Ano­ni­mi­za­ción

Un proxy inverso también puede emplearse para la ano­ni­mi­za­ción del tráfico, en­ma­s­ca­ra­n­do las di­re­c­cio­nes IP ori­gi­na­les de los clientes o su­s­ti­tu­yé­n­do­las por sus propias di­re­c­cio­nes IP. De este modo, se protege la pri­va­ci­dad de los clientes, ya que las di­re­c­cio­nes IP reales no aparecen en los registros. Además, esto permite im­ple­me­n­tar balanceo de carga geo­grá­fi­co: las so­li­ci­tu­des pueden re­di­ri­gi­r­se al servidor más cercano en función de la ubicación geo­grá­fi­ca del usuario o la usuaria.

Co­m­pre­sión

Con el software adecuado, un proxy inverso puede uti­li­zar­se para la co­m­pre­sión de datos entrantes y salientes. Un programa muy popular para la co­m­pre­sión de páginas web es gzip, que a menudo se emplea en co­m­bi­na­ción con los se­r­vi­do­res web Apache o NGINX.

Consejo

En artículos separados te ex­pli­ca­mos paso a paso cómo co­n­fi­gu­rar un proxy inverso con NGINX o un proxy inverso con Apache.

Ir al menú principal