#c# #asp.net-core #asp.net-core-3.1 #yarp
Вопрос:
Я хочу реализовать обратный прокси-сервер с помощью Yarp. Api запущен и работает, так как я могу отправить ему запрос. Однако всякий раз, когда я пытаюсь выполнить тот же запрос через прокси-сервер, я получаю сообщение об ошибке 502 Плохой шлюз
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddReverseProxy()
.LoadFromConfig(Configuration.GetSection("ReverseProxy"));
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
// Register the reverse proxy routes
app.UseEndpoints(endpoints =>
{
endpoints.MapReverseProxy();
});
}
Настройки приложений
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "cluster1",
"Match": {
//"Methods": [ "GET", "POST", "PUT", "HEAD", "OPTIONS", "DELETE" ],
"Path": "{**catch-all}"
}
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"cluster1/destination1": {
"Address": "https://localhost:44339/"
}
}
}
}
}
Я получаю ответ — 502 плохой шлюз в любое время, когда отправляю запрос через прокси
Ответ №1:
Вы должны нажать output
и выбрать ProjectName-Asp.Net Core Web Server
, чтобы проверить детали.
Я использую ваш код, а также добавляю другие настройки и проверяю журналы, я обнаружил, что причина в http://localhost:44339 не начинай. Он должен использовать порт другого веб-приложения в локальном.
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
//"AllowedHosts": "*"
"ReverseProxy": {
"Routes": [
{
"ClusterId": "cluster1",
"Match": {
//"Methods": [ "GET", "POST", "PUT", "HEAD", "OPTIONS", "DELETE" ],
"Path": "{**catch-all}"
}
},
{
// matches /something/* and routes to 2 external addresses
"ClusterId": "cluster2",
"Match": {
"Path": "/something/{*any}"
}
}
],
"Clusters": {
"cluster1": {
"Destinations": {
"cluster1/destination1": {
"Address": "http://localhost:44339/"
}
}
},
"cluster2": {
"Destinations": {
"first_destination": {
"Address": "https://baidu.com"
},
"another_destination": {
"Address": "https://bing.com"
}
},
"LoadBalancingPolicy": "PowerOfTwoChoices"
}
}
}
}
Результат теста
по умолчанию: https://localhost:44370
https://localhost:44370/somthing
он перенаправит на сайт bing.