¿Qué es un proxy inverso y cómo funciona?

¿Qué es un proxy inverso y cómo funciona?

Los proxies inversos son una herramienta útil en la caja de herramientas de cualquier administrador de sistemas. Tienen muchos usos, incluido el equilibrio de carga, la protección DDOS

¿Qué son los proxies inversos?

Un servidor proxy regular, llamado Forward Proxy, es un servidor a través del cual se enruta la conexión de un usuario. En muchos sentidos, es como una simple VPN que se encuentra frente a su conexión a Internet. Las VPN son un ejemplo común de esto, pero también incluyen cosas como firewalls escolares que pueden bloquear el acceso a cierto contenido.

Un proxy inverso funciona un poco diferente. Esta es una herramienta interna utilizada por los administradores del sistema. En lugar de conectarse directamente al sitio web que ofrece el contenido, un proxy inverso como NGINX puede ubicarse en el medio. Cuando recibe una solicitud de un usuario, reenvía o «representa» esa solicitud al servidor final. Este servidor se denomina «servidor de origen» porque será el que responderá a las solicitudes.

Si bien es probable que el usuario sepa si está enrutado a través de un proxy de reenvío, como una VPN o un firewall, los proxies inversos son herramientas internas. Por lo que el usuario sabe, simplemente se conecta al sitio web. Todo detrás de un proxy inverso está oculto y esto también tiene muchas ventajas.

Sin embargo, este efecto también se produce a la inversa. El servidor de origen no tiene conexión directa con el usuario y solo verá un montón de solicitudes provenientes de la dirección IP del proxy inverso. Esto puede ser un problema, pero la mayoría de los servicios de proxy como NGINX agregarán  X-Forwarded-For encabezados de tipo a la solicitud. Estos encabezados informarán al servidor de origen de la dirección IP real del cliente.

¿Para qué se utilizan los proxies inversos?

Los proxies inversos tienen un concepto bastante simple, pero han demostrado ser una herramienta sorprendentemente útil con muchos casos de uso inesperados.

Balanceo de carga

Una de las principales ventajas de un proxy inverso es su ligereza. Debido a que solo reenvían solicitudes, no necesitan realizar mucho procesamiento, especialmente en situaciones en las que se debe ejecutar una consulta a la base de datos.

Esto significa que el cuello de botella suele ser el servidor de origen, pero con un proxy inverso frente a él, puede tener fácilmente varios servidores de origen. Por ejemplo, un proxy podría enviar el 50 % de las solicitudes a un servidor y el 50 % a otro, duplicando el ancho de banda de un sitio web. Los servicios como HAProxy son buenos en esto.

Este es un caso de uso muy común, y la mayoría de los proveedores de la nube como Amazon Web Services (AWS) ofrecen equilibrio de carga como un servicio, ahorrándole la molestia de configurarlo usted mismo. Con la automatización de la nube, incluso puede escalar automáticamente la cantidad de servidores de origen en función del tráfico, una función llamada «autoescalado».

Los balanceadores de carga como Elastic Load Balancer de AWS se pueden configurar para que se reconfiguren automáticamente cuando sus servidores de origen se caigan, todo ello posible gracias a un proxy inverso bajo el capó.

almacenamiento en caché

Dado que el proxy inverso a menudo responde mucho más rápido que el servidor de origen, se usa comúnmente una técnica llamada almacenamiento en caché para acelerar las solicitudes en rutas compartidas. El almacenamiento en caché es cuando los datos de la página se almacenan en un servidor proxy inverso y solo se solicitan al servidor de origen una vez cada pocos segundos/minutos. Esto reduce en gran medida la carga en el servidor de origen.

Por ejemplo, este artículo que está leyendo actualmente fue proporcionado por WordPress, que necesita acceder a una base de datos SQL para obtener el contenido y los metadatos del artículo. Hacer esto para cada actualización de página es un desperdicio, dado que la página en realidad no cambia. De esta manera, esta ruta se puede almacenar en caché y el proxy inverso simplemente enviará la última respuesta al siguiente usuario en lugar de molestar a WordPress nuevamente.

Una red dedicada de servidores proxy inversos que almacenan en caché su contenido se denomina red de entrega de contenido o CDN. Los grandes sitios web suelen utilizar CDN como CloudFlare o Fastly para acelerar la entrega global. Los servidores de todo el mundo que almacenan contenido en caché se denominan «nodos de borde» y una gran cantidad de ellos pueden hacer que su sitio sea muy rápido.

Seguridad y privacidad de la red

Debido a que el usuario no sabe qué hay detrás del proxy inverso, no podrá atacar fácilmente los servidores de origen directamente. De hecho, los proxies inversos generalmente se usan con servidores de origen en subredes privadas, lo que significa que no tienen ninguna conexión entrante a Internet externa.

Esto mantiene la privacidad de la configuración de su red, y aunque la seguridad a través de la oscuridad nunca es confiable, es mejor que dejarla abierta a ataques.

Esta confianza inherente también puede ser útil al planificar su red. Por ejemplo, un servidor API que interactúa con una base de datos es como un proxy inverso. La base de datos sabe que puede confiar en el servidor de la API en la subred privada, y el servidor de la API actúa como un cortafuegos para la base de datos, permitiendo únicamente conexiones válidas a través de ella.

Interfaz personalizable

Una de las ventajas de los proxies inversos como NGINX es que son fáciles de configurar. Suele ser útil tenerlos delante de otros servicios solo para configurar el acceso de los usuarios a esos servicios.

Por ejemplo, NGINX puede restringir las solicitudes a ciertas rutas, lo que puede evitar que los atacantes realicen miles de solicitudes a los servidores de origen desde una sola dirección IP. No detiene los ataques DDOS, pero eso es algo bueno.

NGINX también puede redirigir el tráfico de varios nombres de dominio utilizando bloques de «servidor» personalizados. Por ejemplo, puede enviar solicitudes a example.com su servidor de origen, pero enviarlas api.example.com a su servidor API personalizado o files.example.com su almacenamiento de archivos, y así sucesivamente. Cada servidor puede tener su propia configuración y reglas.

NGINX también puede agregar funciones adicionales además de los servidores de origen existentes, como certificados HTTPS centralizados y configuración de encabezado.

A veces es útil tener NGINX en la misma máquina que otro servicio local, solo para servir el contenido de ese servicio. Por ejemplo, las API web de ASP.NET utilizan un servidor web interno llamado Kestrel, que responde bien, pero no más que eso. Es muy común ejecutar Kestrel en un puerto privado y usar NGINX como proxy inverso personalizado.

Registro centralizado

Es bastante simple, pero la mayor parte de su tráfico pasa por un solo servicio, lo que facilita la verificación de registros. El registro de acceso de NGINX contiene mucha información útil sobre su tráfico y, aunque no supera a servicios como Google Analytics, es información útil.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *