Compartir a través de


Introducción a YARP

Introducción a YARP

YARP (Otro proxy inverso) es una biblioteca de proxy inverso altamente personalizable para .NET. Está diseñado para proporcionar un marco de proxy sólido, flexible, escalable, seguro y fácil de usar. YARP ayuda a los desarrolladores a crear soluciones de proxy inverso potentes y eficaces adaptadas a sus necesidades específicas.

Qué hace un proxy inverso

Un proxy inverso es un servidor que se encuentra entre los dispositivos cliente y los servidores back-end. Reenvía las solicitudes de cliente al servidor back-end adecuado y, a continuación, devuelve la respuesta del servidor al cliente. Un proxy inverso proporciona varias ventajas:

  • Enrutamiento: dirige las solicitudes a diferentes servidores back-end en función de reglas predefinidas, como patrones de dirección URL o encabezados de solicitud. Por ejemplo, las solicitudes de /images, /api, y /db se pueden enrutar a los servidores de imagen, API y base de datos.
  • Equilibrio de carga: distribuye el tráfico entrante entre varios servidores back-end para evitar sobrecargar un servidor específico. La distribución aumenta el rendimiento y la confiabilidad.
  • Escalabilidad: al distribuir el tráfico entre varios servidores, un proxy inverso ayuda a escalar las aplicaciones para controlar más usuarios y cargas más altas. Se han escalado los servidores back-end (agregados o eliminados) sin afectar al cliente.
  • Terminación de SSL/TLS: descarga los procesos de cifrado y descifrado TLS de los servidores back-end, reduciendo su carga de trabajo.
  • Abstracción de conexión, desacoplamiento y control sobre el espacio de direcciones URL: las solicitudes entrantes de clientes externos y las respuestas salientes del back-end son independientes. Esta independencia permite diferentes:
    • Versiones de HTTP, ie, HTTP/1.1, HTTP/2, HTTP/3. El proxy puede actualizar o degradar las versiones HTTP.
    • Duraciones de conexión, lo que permite tener conexiones de larga duración en el back-end al tiempo que mantiene conexiones de cliente cortas.
    • Control sobre el espacio de direcciones URL: las direcciones URL entrantes se pueden transformar antes de reenviar al back-end. Esto abstrae el proceso de cómo se asignan las direcciones URL externas a los servicios internos. Los puntos de conexión de servicio internos pueden cambiar sin afectar a las direcciones URL externas.
  • Seguridad: los puntos de conexión de servicio internos se pueden ocultar de la exposición externa, lo que ofrece protección contra algunos tipos de ciberataques, como Ataques DDoS.
  • Almacenamiento en caché: los recursos solicitados con frecuencia se pueden almacenar en caché para reducir la carga en los servidores back-end y mejorar los tiempos de respuesta.
  • Control de versiones: se pueden admitir diferentes versiones de una API mediante diferentes asignaciones de direcciones URL.
  • Mantenimiento simplificado: los proxies inversos pueden controlar la Terminación SSL/TLS y otras tareas, lo que simplifica la configuración y el mantenimiento de los servidores back-end. Por ejemplo, los certificados SSL y las directivas de seguridad se pueden administrar en el nivel de proxy inverso en lugar de en cada servidor individual.

Cómo un proxy inverso controla HTTP

Un proxy inverso controla las solicitudes y respuestas HTTP de la siguiente manera:

  • Recepción de solicitudes: el proxy inverso escucha en puertos y puntos de conexión especificados para las solicitudes HTTP entrantes de los clientes.
  • Terminación de conexiones: las conexiones HTTP entrantes se finalizan en el proxy y se usan nuevas conexiones para las solicitudes salientes a destinos.
  • Solicitudes de enrutamiento: en función de las configuraciones y reglas de enrutamiento predefinidas, el proxy inverso determina qué servidor back-end o clúster de servidores debe controlar la solicitud.
  • Solicitudes de reenvío: el proxy inverso reenvía la solicitud del cliente al servidor back-end adecuado, transformando la ruta de acceso y los encabezados según sea necesario.
  • Agrupación de conexiones: las conexiones salientes se agrupan para reducir la sobrecarga de conexión y maximizar el aprovechamiento de la reutilización de HTTP 1.1 y las solicitudes paralelas con HTTP/2 y HTTP/3.
  • Respuestas de procesamiento: el servidor back-end procesa la solicitud y envía una respuesta al proxy inverso.
  • Devolver respuestas: el proxy inverso recibe la respuesta del servidor back-end y la reenvía al cliente, realizando las transformaciones de respuesta necesarias.

Este proceso garantiza que el cliente interactúe con el proxy inverso en lugar de directamente con los servidores back-end, lo que proporciona las ventajas del equilibrio de carga, la seguridad, el control de versiones, etc.

¿Por qué elegir YARP en otros servidores proxy?

YARP ofrece varias ventajas únicas que lo convierten en una opción atractiva para los desarrolladores:

  • Personalización: YARP es altamente personalizable, lo que permite a los desarrolladores adaptar el proxy a sus necesidades específicas con un esfuerzo mínimo.
  • Integración con .NET: basado en ASP.NET Core, YARP se integra perfectamente con el ecosistema de .NET, lo que lo convierte en una opción ideal para los desarrolladores de .NET.
  • Extensibilidad: YARP proporciona un amplio conjunto de puntos de extensibilidad, lo que permite a los desarrolladores agregar lógica y características personalizadas según sea necesario, mediante código de C# conocido.
  • Escalabilidad: La opción de extensibilidad para el reenvío directo permite que YARP escale para gestionar tanto los nombres de dominio como el escalamiento del back-end, lo cual no puede ser soportado por la mayoría de los proxies inversos.
  • Desarrollo activo: YARP se mantiene activamente y lo desarrolla Microsoft, lo que garantiza que se mantenga actualizado con las tecnologías y procedimientos recomendados más recientes.
  • Documentación completa mantenida: YARP incluye una amplia documentación y ejemplos, lo que facilita la introducción e implementación de características avanzadas.
  • Código abierto. YARP y la documentación de YARP son de código abierto. Las contribuciones, las revisiones y los comentarios se agradecen.