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


ArtemisDiana/Shutterstock.com

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

¿Qué son los proxies inversos?

Un 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 VPN simple, 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 cortafuegos escolares, que pueden bloquear el acceso a cierto contenido.

Un proxy inverso funciona un poco diferente. Es una herramienta de back-end utilizada por los administradores del sistema. En lugar de conectarse directamente a un sitio web que ofrece contenido, un proxy inverso como NGINX puede ubicarse en el medio. Cuando recibe una solicitud de un usuario, enviará esa solicitud al servidor final. Este servidor se llama el «servidor de origen» ya que es lo que realmente responderá a las solicitudes.

Si bien es probable que un usuario sepa si está siendo enrutado a través de un proxy directo como una VPN o un firewall, los proxies inversos son herramientas de back-end. Por lo que el usuario sabe, solo se está conectando a un sitio web. Todo detrás del proxy inverso está oculto, y esto también tiene numerosos beneficios.

Sin embargo, este efecto también ocurre a la inversa. El servidor de origen no tiene una conexión directa con el usuario y solo verá un montón de solicitudes provenientes de la IP del proxy inverso. Esto puede ser un problema, pero la mayoría de los servicios de proxy como NGINX agregarán encabezados como X-Forwarded-For 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 demuestran ser una herramienta sorprendentemente útil con muchos casos de uso inesperados.

Balanceo de carga

Uno de los principales beneficios de un proxy inverso es lo livianos que pueden ser. Dado que solo reenvían solicitudes, no tienen que hacer mucho procesamiento, especialmente en situaciones en las que es necesario consultar una 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 varios servidores de origen fácilmente. Por ejemplo, el proxy podría enviar el 50% de las solicitudes a un servidor y el 50% a otro, duplicando la capacidad del sitio web. Los servicios como HAProxy están diseñados para manejar esto bien.

Este es un caso de uso muy común, y la mayoría de los proveedores de servicios en la nube como Amazon Web Services (AWS) ofrecerán 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 respuesta al tráfico, una característica llamada «escalado automático».

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

RELACIONADO: Cómo comenzar con los Elastic Load Balancers de AWS

almacenamiento en caché

Dado que un 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 comunes. El almacenamiento en caché es cuando los datos de la página se almacenan en el proxy inverso y solo se solicitan al servidor de origen una vez cada pocos segundos/minutos. Esto reduce drásticamente la tensión en el servidor de origen.

Por ejemplo, este artículo que está leyendo ahora fue servido por WordPress, que necesita comunicarse con una base de datos SQL para obtener el contenido y los metadatos del artículo. Hacer eso para cada actualización de página es un desperdicio considerando que la página realmente no cambia. Por lo tanto, esta ruta se puede almacenar en caché y el proxy inverso simplemente enviará la última respuesta al siguiente usuario, en lugar de volver a molestar a WordPress.

Una red dedicada de proxies 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 en caché el contenido se denominan «nodos de borde», y tener muchos de ellos puede hacer que su sitio web sea muy ágil.

Protección de red y privacidad

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

Esto mantiene la privacidad de la configuración de su red, y aunque la seguridad a través de la oscuridad nunca es infalible, 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 se comunica con una base de datos es similar a 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 el cortafuegos de la base de datos y solo permite las conexiones correctas a través de ella.

Interfaz configurable

Uno de los beneficios de los proxies inversos como NGINX es lo altamente configurables que son. A menudo, es útil tenerlos frente a otros servicios solo para configurar cómo los usuarios acceden a esos servicios.

Por ejemplo, NGINX puede calificar las solicitudes de límite para ciertas rutas, lo que puede evitar que los abusadores realicen miles de solicitudes a los servidores de origen desde una sola IP. Esto no detiene los ataques DDOS, pero es bueno tenerlo.

NGINX también puede reenviar tráfico desde múltiples nombres de dominio con bloques de «servidor» configurables. Por ejemplo, podría enviar solicitudes a example.com a su servidor de origen, pero envíe api.example.com a su servidor API especial, o files.example.com a 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, simplemente para servir contenido de ese servicio. Por ejemplo, las API web de ASP.NET usan un servidor web interno llamado Kestrel, que es bueno para responder a las solicitudes, pero no mucho más. Es muy común ejecutar Kestrel en un puerto privado y usar NGINX como proxy inverso configurable.

Registro centralizado

Este es bastante simple, pero hacer que la mayor parte de su tráfico pase por un servicio 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 las funciones de un servicio como Google Analytics, es una excelente información.

RELACIONADO: Cómo configurar un panel de monitoreo y análisis de Elasticsearch para su negocio





Source link-39