Преглед на 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#, вместо на специфичен за проксито конфигурационен език. Той се поддържа активно от Microsoft, а както YARP, така и документацията му са с отворен код.