Introducción a YARP en C# - Cómo crear un proxy inverso
Cuando se trata de gestionar eficazmente el tráfico web en un entorno .NET Core, un proxy inverso se convierte en una herramienta indispensable. YARP, abreviatura de Yet Another Reverse Proxy (Otro proxy inverso más), es el proyecto de proxy inverso de Microsoft, muy flexible y personalizable, creado específicamente para el ecosistema .NET. En este artículo, vamos a profundizar en los primeros pasos con YARP siguiendo el completo tutorial de Tim Corey en "Intro To YARP In C# - How To Create a Reverse Proxy", donde demuestra la configuración y el uso de YARP en una aplicación web .NET Core.
Empecemos con una introducción a YARP, y cómo puedes aprovechar este marco proxy en tus propios proyectos.
¿Qué es un proxy inverso?
En el minuto 1:07, Tim explica que un proxy inverso se sitúa entre el cliente (los usuarios) y los servidores backend, gestionando las peticiones entrantes y dirigiéndolas eficazmente al destino adecuado.
En el minuto 1:45, Tim explica por qué es importante un proxy: no sólo para equilibrar la carga, sino también para simplificar las cabeceras de las solicitudes, proteger las conexiones con HTTPS y garantizar que los servicios backend estén aislados del acceso directo. Mediante el uso de un proxy inverso, puede escalar fácilmente sus aplicaciones .NET Core sin exponer su estructura interna.
Introducción a YARP
En el minuto 5:11, Tim presenta YARP (Yet Another Reverse Proxy). Tim explica que Microsoft se dio cuenta de la necesidad de un marco proxy que se adaptara mejor a las necesidades específicas de su amplia gama de aplicaciones .NET, lo que llevó a la creación de YARP. Está diseñado como una biblioteca que proporciona la funcionalidad básica del proxy de forma modular, robusta y extensible.

Esta biblioteca se encuentra en desarrollo activo, lo que garantiza que incluya las últimas funciones y sea compatible con las tecnologías más recientes, como Linux, Windows y entornos en la nube.
Además, Tim hace hincapié en la exhaustiva documentación mantenida y la extensa documentación disponible para YARP, que facilita mucho los inicios a los nuevos desarrolladores.
Cómo crear un proyecto YARP básico
En el minuto 6:14, Tim inicia un nuevo proyecto en Visual Studio utilizando el SDK de .NET. Crea un proyecto básico de API web ASP.NET Core llamado Pessimistic API.

Tim a las 7:02 modifica el proyecto para crear una API pesimista que simula un servicio de clima frío. Esta sencilla aplicación net core es el servidor backend al que YARP hará proxy posteriormente.
Tim sugiere a las 8:44 verificar el proyecto antes de seguir adelante, asegurándose de que el servicio de ejemplo responde correctamente a las peticiones en /weatherforecast.
Creación de la pasarela YARP
A las 9:04, Tim crea un proyecto ASP.NET Core vacío llamado YarpGateway. Este proyecto actúa como proxy inverso.
Tim explica cómo instalar el paquete necesario accediendo a Manage NuGet Packages y buscando install package YARP (a las 10:24). Para ello se utiliza YARP Reverse Proxy, la biblioteca oficial que proporciona la funcionalidad básica necesaria del proxy.
Configuración de YARP
En 12:02, Tim demuestra cómo cablear la configuración de YARP dentro de Program.cs mediante:
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
Esta configuración carga archivos de configuración que definen las rutas y los clusters, elementos fundamentales cuando se utiliza YARP para enrutar peticiones.
Las rutas coinciden con la ruta de entrada, y los clusters definen los servicios backend a los que reenviar. Esta configuración modular permite añadir funciones avanzadas como la limitación de velocidad, la sustitución de módulos y el ajuste de la gestión de rutas.
Tim señala que este diseño flexible es la razón por la que YARP es un proxy inverso altamente personalizable y adecuado para proyectos del mundo real.
Prueba de la configuración básica del proxy
En el minuto 20:02, Tim muestra la ejecución conjunta del backend Pessimistic API y del YarpGateway.
Cuando se navega a la URL /weatherforecast de la pasarela, YARP dirige la solicitud entrante al servidor backend, obtiene la respuesta y la sirve, sin exponer la URL interna. Esto demuestra la funcionalidad del proxy y el enrutamiento de solicitudes en acción.
Ampliación con un segundo backend
A las 21:17, Tim añade otro nuevo proyecto llamado Optimistic API que devuelve sólo temperaturas cálidas.
Configura YARP con múltiples destinos dentro de un único clúster. Esto permite equilibrar la carga, es decir, distribuir aleatoriamente las solicitudes entrantes entre dos servidores backend.
Más adelante, en el minuto 26:26, Tim explica que se puede personalizar aún más la estrategia de equilibrio de carga, incluyendo opciones como round robin o lógica personalizada basada en atributos de solicitud.
Actualización de un sitio web estático con YARP
En el minuto 28:12, Tim describe un ejemplo real: la actualización de su propio sitio web (iamtimcorey.com).
Crea una aplicación web .NET Core de WebsiteUpgrade que proxy todo el tráfico al sitio original utilizando una ruta catch-all.

Esta estrategia permite actualizaciones graduales: Tim puede reconstruir y modernizar las páginas con Razor sin dejar de dar soporte a los contenidos más antiguos servidos por el sistema heredado. Las solicitudes entrantes se dirigen automáticamente al sitio original o al nuevo contenido, dependiendo de la ruta.
Añadir nuevas funcionalidades con Razor Pages
En el minuto 34:30, Tim añade Razor Pages al proyecto de actualización. Muestra cómo añadir una página sencilla (/more) que es servida directamente por la nueva aplicación mientras que todo lo demás es proxy.
Gracias a la flexibilidad de YARP, pueden añadirse nuevos módulos y funciones sin alterar los servicios backend existentes.
Implementación de enrutamiento avanzado y transformaciones de ruta
En el minuto 39:03, Tim crea una ruta /random que reescribe la ruta y redirige a los usuarios aleatoriamente entre tres páginas de cursos diferentes.
Utiliza la función de transformación de YARP para modificar las cabeceras y rutas de las peticiones durante el proxy, mostrando cómo los desarrolladores pueden ajustar el comportamiento a sus necesidades específicas.
Tim encuentra una errata alrededor del minuto 44:03, pero la corrige, haciendo hincapié en la atención a los archivos de configuración.
Cómo configurar el equilibrio de carga Round Robin
A las 45:10, Tim cambia el enrutamiento aleatorio a round robin. Este sencillo cambio de configuración mejora la previsibilidad a la hora de distribuir el tráfico entre varias páginas.

Destaca una de las características clave de YARP: la facilidad para personalizar comportamientos dinámicamente mediante la mera configuración, sin cambios profundos en el código.
Conclusión: ¿Por qué elegir YARP?
En el minuto 47:03, Tim concluye resumiendo por qué YARP es una herramienta fundamental para las aplicaciones .NET Core modernas:
-
Está diseñado como una biblioteca de fácil integración.
-
Proporciona la funcionalidad básica de proxy que necesitan los desarrolladores.
-
Microsoft lo está desarrollando activamente.
-
Es compatible con Linux, Windows y HTTPS.
-
Cuenta con una amplia documentación y una completa documentación actualizada.
-
Permite enrutar solicitudes de forma flexible a múltiples servidores backend.
-
Admite una fácil personalización para necesidades específicas.
- Es de nivel de producción, escalable y ajustado al rendimiento.
Tim anima a los espectadores a explorar aún más características, como la limitación de velocidad, la sustitución de módulos y configuraciones más profundas de la pasarela API, siguiendo la documentación oficial o sugiriendo un curso completo de YARP.
Reflexiones finales
Siguiendo el vídeo completo de Tim Corey sobre la configuración de un proxy inverso YARP, cualquier desarrollador puede ponerse al día rápidamente con otro proxy inverso. Ya sea que esté manejando un balanceo de carga complejo, reemplazando módulos o actualizando incrementalmente su sitio, YARP Yet Another Reverse Proxy ofrece una solución sólida y flexible para el mundo de .NET Core. Echa un vistazo a su Canal de YouTube para ver más vídeos interesantes.
