Compartilhar via


Introdução ao YARP: Começando com YARP

O YARP foi projetado como uma biblioteca que fornece a funcionalidade de proxy principal que você pode personalizar adicionando ou substituindo módulos. Atualmente, o YARP é disponibilizado como um pacote NuGet e trechos de código. Planejamos fornecer um modelo de projeto e exe predefinido no futuro.

O YARP é implementado sobre a infraestrutura do .NET Core e é utilizável no Windows, Linux ou MacOS. O desenvolvimento pode ser feito com o SDK e seu editor favorito, do Microsoft Visual Studio ou do Visual Studio Code.

O YARP 2.1.0 dá suporte ao ASP.NET Core 6.0 e mais recente, incluindo ASP.NET Core 8.0. Você pode baixar o SDK do .NET de https://dotnet.microsoft.com/download/dotnet/.

O suporte do Visual Studio para .NET 8 está incluído no Visual Studio 2022 17.8.

Criar um novo projeto

Uma versão completa do projeto construída usando as etapas abaixo pode ser encontrada em Exemplo Básico de YARP.

Comece criando um aplicativo "Empty" ASP.NET Core usando a linha de comando:

dotnet new web -n MyProxy -f net8.0

Ou crie um novo aplicativo Web ASP.NET Core no Visual Studio 2022 e escolha "Vazio" para o modelo de projeto.

Adicionar a referência do projeto

<ItemGroup> 
 <PackageReference Include="Yarp.ReverseProxy" Version="2.1.0" />
</ItemGroup> 

Adicionar o middleware YARP

Atualize Program.cs para usar o middleware YARP:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
var app = builder.Build();
app.MapReverseProxy();
app.Run();

Configuração

A configuração do YARP é definida no arquivo appsettings.json. Consulte Arquivos de Configuração para obter detalhes.

A configuração também pode ser fornecida programaticamente. Consulte Provedores de Configuração para obter detalhes.

Você pode saber mais sobre as opções de configuração disponíveis examinando RouteConfig e clusterConfig.

{
 "Logging": {
   "LogLevel": {
     "Default": "Information",
     "Microsoft": "Warning",
     "Microsoft.Hosting.Lifetime": "Information"
   }
 },
 "AllowedHosts": "*",
 "ReverseProxy": {
   "Routes": {
     "route1" : {
       "ClusterId": "cluster1",
       "Match": {
         "Path": "{**catch-all}"
       }
     }
   },
   "Clusters": {
     "cluster1": {
       "Destinations": {
         "destination1": {
           "Address": "https://example.com/"
         }
       }
     }
   }
 }
}

Executando o projeto

Use dotnet run chamado no diretório do exemplo ou no dotnet run --project <path to .csproj file>