當前位置: 妍妍網 > 碼農

.NET反向代理元件YARP的簡單使用

2024-01-29碼農

在.NET開發中,反向代理是一種常見的網路架構模式,用於將客戶端請求轉發到後端伺服器,同時對請求和響應進行管理和處理。YARP(Yet Another Reverse Proxy)是一個輕量級的.NET反向代理元件,可以幫助開發者快速搭建反向代理伺服器。本文將介紹YARP的簡單使用方法。

一、安裝YARP

首先,你需要在你的計畫中安裝YARP。你可以透過NuGet包管理器來安裝YARP。在你的Visual Studio中,開啟NuGet包管理器控制台,然後輸入以下命令:

Install-Package Yarp

二、建立反向代理伺服器

安裝完YARP後,你可以建立一個反向代理伺服器。下面是一個簡單的例子:

using Yarp.Http;
using Yarp.Routing;
using Yarp.Server;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
public classProxyServer : IServer
{
privatereadonlystring _targetHost;
privatereadonlyint _targetPort;
privatereadonlystring _targetPath;
publicProxyServer(string targetHost, int targetPort, string targetPath)
{
_targetHost = targetHost;
_targetPort = targetPort;
_targetPath = targetPath;
}
publicasync Task StartAsync(IHttpApplication application)
{
var handler = new HttpProxyHandler(_targetHost, _targetPort, _targetPath);
handler.Route = new HttpProxyRoute(application.RequestContext) { Handler = handler };
await application.UseMiddlewareAsync(async (app) => app.UseRouting());
await application.UseMiddlewareAsync(async (app) => app.UseEndpoints(endpoints => endpoints.MapControllers()));
await application.UseMiddlewareAsync(async (app) => app.UseMiddleware<RoutingMiddleware>());
await application.UseMiddlewareAsync(async (app) => app.UseMiddleware<HttpProxyMiddleware>());
}
}

在這個例子中,我們建立了一個 ProxyServer 類,它實作了 IServer 介面。 StartAsync 方法中,我們建立了一個 HttpProxyHandler 例項,並設定了目標主機、埠和路徑。然後,我們建立了一個 HttpProxyRoute 例項,並將其與 HttpProxyHandler 關聯。最後,我們使用中介軟體將路由和代理處理器添加到應用程式中。

三、執行反向代理伺服器

建立完反向代理伺服器後,你可以執行它。下面是一個簡單的例子:

publicstaticasync Task Main(string[] args)
{
var host = new WebHostBuilder()
.UseUrls("http://localhost:5000"// 監聽的埠號可以根據需要進行修改
.UseStartup<Startup>() // 使用你的Startup類來配置你的應用程式
.Build(); // 構建主機例項並開始執行應用程式
}

在這個例子中,我們使用ASP.NET Core的WebHostBuilder來建立一個Web主機例項,並設定監聽的埠號為5000。然後,我們使用我們的Startup類來配置應用程式,並呼叫 Build 方法來構建主機例項並開始執行應用程式。現在,你的反向代理伺服器已經執行起來了。任何發送到localhost:5000的請求都將被轉發到你設定的目標主機和埠上。