YARP Docsv2.3
Документация/Начало работы/Обзор YARP

Обзор YARP

YARP (Yet Another Reverse Proxy) — это высоко настраиваемая библиотека обратного прокси-сервера для .NET, созданная так, чтобы быть надёжной, гибкой, масштабируемой, безопасной и простой в использовании перед уже имеющимися у вас сервисами.

Введение

YARP помогает разработчикам создавать мощные и эффективные решения на основе обратного прокси-сервера, адаптированные под их конкретные потребности. Он располагается между клиентскими устройствами и серверами бэкенда, перенаправляя клиентские запросы на подходящий узел назначения и возвращая ответ — ту же роль играют nginx или Envoy, но здесь это библиотека, которую вы размещаете внутри собственного процесса ASP.NET Core.

Что делает обратный прокси-сервер

Обратный прокси-сервер даёт ряд преимуществ по сравнению с обычным бэкендом:

  • Маршрутизация — направляет запросы на разные серверы бэкенда на основе заранее заданных правил, таких как шаблоны URL или заголовки запросов. Например, /images, /api и /db могут быть направлены на разные серверы.
  • Балансировка нагрузки — распределяет входящий трафик между несколькими серверами бэкенда, чтобы предотвратить перегрузку какого-либо одного из них.
  • Масштабируемость — серверы бэкенда можно добавлять или удалять, не затрагивая клиента, поскольку распределением трафика занимается прокси-сервер.
  • Терминация TLS — снимает нагрузку по шифрованию и расшифровке с серверов бэкенда, снижая их рабочую нагрузку.
  • Безопасность — внутренние конечные точки служб остаются скрытыми от внешнего доступа, что уменьшает поверхность атаки.

Как обратный прокси-сервер обрабатывает HTTP

Входящие подключения завершаются на прокси-сервере; для исходящих запросов к узлам назначения используются новые подключения из пула. На основе настроенных правил маршрутизации YARP определяет, какой кластер должен обработать запрос, перенаправляет его — при необходимости преобразуя путь и заголовки — и передаёт ответ бэкенда обратно клиенту.

Быстрый пример

Регистрирует прокси-сервер и загружает маршруты и кластеры непосредственно из конфигурации.

C#using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));

var app = builder.Build();
app.MapReverseProxy();
app.Run();
JSON{
  "ReverseProxy": {
    "Routes": {
      "route1": {
        "ClusterId": "cluster1",
        "Match": { "Path": "{**catch-all}" }
      }
    },
    "Clusters": {
      "cluster1": {
        "Destinations": {
          "cluster1/destination1": { "Address": "https://example.com/" }
        }
      }
    }
  }
}
Примечание

Конфигурация автоматически перезагружается при изменении источника — перезапуск не требуется. Чтобы изменять конфигурацию в процессе загрузки, см. раздел Фильтры конфигурации.

Почему стоит выбрать YARP среди других прокси-серверов

YARP построен на ASP.NET Core, поэтому он напрямую интегрируется с экосистемой .NET и предоставляет богатый набор точек расширения — маршрутизацию, балансировку нагрузки и преобразования можно настраивать на привычном C#, а не на специфичном для прокси-сервера языке конфигурации. YARP активно поддерживается Microsoft, а сам YARP и его документация распространяются с открытым исходным кодом.

Адаптировано из Microsoft Learn , лицензия CC BY 4.0 .