.NET反向代理組件YARP介紹
什么是 YARP
YARP (另一個(gè)反向代理) 設(shè)計(jì)為一個(gè)庫(kù),提供核心代理功能,你可以根據(jù)應(yīng)用程序的特定需求進(jìn)行自定義。
YARP 是使用 .NET的基礎(chǔ)架構(gòu)構(gòu)建在 .NET上的。
YARP 的主要不同之處在于,它被設(shè)計(jì)成可以通過(guò) .NET 代碼輕松定制和調(diào)整,以滿足每個(gè)部署場(chǎng)景的特定需求。
同時(shí),YARP是一個(gè)開(kāi)源項(xiàng)目,托管于 Github 上,開(kāi)源地址https://github.com/microsoft/reverse-proxy
什么是反向代理
反向代理服務(wù)器是代理服務(wù)器中的一種,它是在Web服務(wù)器之前實(shí)現(xiàn)的,并將客戶端請(qǐng)求定向到特定的后端服務(wù)器。通常,反向代理有助于提高Web服務(wù)器的安全性和性能,并防止過(guò)載。

反向代理作用
1.負(fù)載平衡。通常,擁有許多日常用戶的網(wǎng)站無(wú)法使用一個(gè)原始服務(wù)器處理所有流量。因此,網(wǎng)站會(huì)在不同后端服務(wù)器的群集之間均衡分配用戶流量。這些服務(wù)器管理同一網(wǎng)站的客戶端請(qǐng)求。
此外,反向代理可以避免任意單個(gè)服務(wù)器過(guò)載,因?yàn)樗姓军c(diǎn)的流量都必須通過(guò)反向代理。只有這樣,流量才能訪問(wèn)特定的后端服務(wù)器。
2.保護(hù)免受黑客攻擊。如果網(wǎng)站使用反向代理,則其服務(wù)器的地址將被隱藏,黑客只能訪問(wèn)代理IP地址。這對(duì)黑客和惡意實(shí)體起到了一定的防護(hù)。
例如:對(duì)使用反向代理的網(wǎng)站進(jìn)行分布式拒絕服務(wù)(DDoS)攻擊要困難得多。DDoS攻擊是通過(guò)破壞主機(jī)服務(wù)與互聯(lián)網(wǎng)的連接,從而使用戶無(wú)法訪問(wèn)該網(wǎng)站。
當(dāng)網(wǎng)站使用反向代理時(shí),黑客將只能攻擊這些代理,這將作為附加的安全層。
3.緩存。緩存使網(wǎng)站可以有效地重用以前獲得的數(shù)據(jù)。這是將文件副本存儲(chǔ)在緩存中以便更迅速地訪問(wèn)的過(guò)程。這使網(wǎng)站和應(yīng)用程序可以更高效地運(yùn)行。
反向代理服務(wù)器可用于緩存網(wǎng)站的內(nèi)容并提高網(wǎng)站的性能。
如何使用YARP
YARP是基于.Net架構(gòu)的一個(gè)庫(kù),其提供了核心代理功能,而又因?yàn)?.Net Core 是跨平臺(tái)的,所以可以應(yīng)用在 windows 于 linux 上;
既然是一個(gè)庫(kù),首先第一步肯定是創(chuàng)建一個(gè)新項(xiàng)目,并且安裝上這一個(gè)庫(kù):
1、創(chuàng)建一個(gè)空的.Net Core 項(xiàng)目

2、在NuGet包管理器中,安裝Yarp.ReverseProxy

或者使用dotnet 命令安裝
dotnet add package Yarp.ReverseProxy --version 1.1.1
3、在Program.cs 中增加配置,.Net 5 及以下版本在 Startup.cs 中添加
Program.cs
var reverseProxyConfig = builder.Configuration.GetSection("ReverseProxy");
builder.Services.AddReverseProxy().LoadFromConfig(reverseProxyConfig);
app.UseEndpoints(endpoints =>
{
endpoints.MapReverseProxy();
});Startup.cs
- ConfigureServices
services.AddReverseProxy().LoadFromConfig(Configuration.GetSection("ReverseProxy"));- Configure
app.UseEndpoints(endpoints =>
{
endpoints.MapReverseProxy();
});4、在 appsetting 中添加ReverseProxy 節(jié)點(diǎn)以及配置項(xiàng)
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "yarp",
"Match": {
"Path": "{**catch-all}"
}
}
},
"Clusters": {
"yarp": {
"LoadBalancingPolicy": "RoundRobin",
"Destinations": {"blazor": {
"Address": "https://www.blazor.zone/"
},
"baidu": {
"Address": "https://www.baidu.com/"
}
}
}
}
}大功告成,可以愉快玩耍了!
寫(xiě)在最后
Bootstrap Blazor 官網(wǎng)地址:https://www.blazor.zone
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
為ASP.NET Core強(qiáng)類型配置對(duì)象添加驗(yàn)證的方法
這篇文章主要給大家介紹了關(guān)于如何為ASP.NET Core強(qiáng)類型配置對(duì)象添加驗(yàn)證的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
ASP.NET 4.0配置文件中的ClientIDMode屬性詳解
在ASP.NET 4.0中的每個(gè)控件上都多了一個(gè)叫做ClientIDMode的屬性,本文主要介紹了ASP.NET 4.0配置文件中的ClientIDMode屬性詳解,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-11-11
asp.net core webapi 服務(wù)端配置跨域的實(shí)例
下面小編就為大家分享一篇asp.net core webapi 服務(wù)端配置跨域的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
asp.net 用XML生成放便擴(kuò)展的自定義樹(shù)
快過(guò)年了,公司沒(méi)有多少工作。閑來(lái)無(wú)事,共享一下之前為WEB系統(tǒng)所做的放便擴(kuò)展的自定義樹(shù)。2010-02-02
ASP.net中獲取客戶端參數(shù)操作系統(tǒng)信息
這篇文章主要介紹了ASP.net中如何獲取客戶端參數(shù)或操作系統(tǒng)信息,需要的朋友可以參考下2014-03-03
asp.net實(shí)現(xiàn)在XmlTextWriter中寫(xiě)入一個(gè)CDATA的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)在XmlTextWriter中寫(xiě)入一個(gè)CDATA的方法,結(jié)合實(shí)例形式分析了XmlTextWriter寫(xiě)入CDATA的步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-04-04
ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面
高訪問(wèn)量類型的電子商務(wù)網(wǎng)站,需要將一些不是經(jīng)常變化的頁(yè)面生成靜態(tài)頁(yè)面,然后普通用戶就可以直接訪問(wèn)這些靜態(tài)頁(yè)面而不用再訪問(wèn)需要連接數(shù)據(jù)庫(kù)的動(dòng)態(tài)頁(yè)面。那么ASP.NET MVC3中如何做到這一點(diǎn)呢2011-12-12
ASP.NET封裝的SQL數(shù)據(jù)庫(kù)訪問(wèn)類
ASP.NET SQL數(shù)據(jù)庫(kù)封裝訪問(wèn)類代碼2009-02-02

