成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

.NET使用YARP通過編碼方式配置域名轉發實現反向代理

瀏覽:11日期:2022-06-08 17:19:06

前面介紹了 YARP 通過配置文件的方式配置代理轉發(傳送門),而眾所周知,微軟的一貫作風就是能通過配置文件做的事情,通過編碼的方式也能實現!YARP 也不例外,廢話不多說,直接上代碼!

首先,參照官方文檔,我們先新建一個 InMemoryConfigProvider 類,并且繼承 IProxyConfigProvider 接口,類里面還包含了一個 IProxyConfig 的類,別看漏了噢!

這里多嘴一下,下面的代碼出現了 volatile 關鍵字,介紹一下它:volatile 是 C# 中用于控制同步的關鍵字,其意義是針對程序中一些敏感數據,不允許多線程同時訪問,保證數據在任何訪問時刻,最多有一個線程訪問,以保證數據的完整性,volatile 是修飾變量的修飾符。

public class InMemoryConfigProvider : IProxyConfigProvider{    private volatile InMemoryConfig _config;    public InMemoryConfigProvider(IReadOnlyList<RouteConfig> routes, IReadOnlyList<ClusterConfig> clusters)    {_config = new InMemoryConfig(routes, clusters);    }    public IProxyConfig GetConfig() => _config;    public void Update(IReadOnlyList<RouteConfig> routes, IReadOnlyList<ClusterConfig> clusters)    {var oldConfig = _config;_config = new InMemoryConfig(routes, clusters);oldConfig.SignalChange();    }    private class InMemoryConfig : IProxyConfig    {private readonly CancellationTokenSource _cts = new();public InMemoryConfig(IReadOnlyList<RouteConfig> routes, IReadOnlyList<ClusterConfig> clusters){    Routes = routes;    Clusters = clusters;    ChangeToken = new CancellationChangeToken(_cts.Token);}public IReadOnlyList<RouteConfig> Routes { get; }public IReadOnlyList<ClusterConfig> Clusters { get; }public IChangeToken ChangeToken { get; }internal void SignalChange(){    _cts.Cancel();}    }}

然后添加一個擴展 InMemoryConfigProviderExtensions

public static class InMemoryConfigProviderExtensions{    public static IReverseProxyBuilder LoadFromMemory(this IReverseProxyBuilder builder, IReadOnlyList<RouteConfig> routes, IReadOnlyList<ClusterConfig> clusters)    {builder.Services.AddSingleton<IProxyConfigProvider>(new InMemoryConfigProvider(routes, clusters));return builder;    }}

接下來就是寫配置了,我個人還是喜歡在配置文件中寫,但是有動態配置需求的話,又不想登錄服務器編輯 appsetting 文件,通過編碼的方式確實更為方便,將配置寫進庫或者其它存儲方式里面,那將是隨心所欲啊!上代碼:

Program.cs

var routes = new[]{    new RouteConfig()    {RouteId = "admin",ClusterId = "admin",Match = new RouteMatch{    Hosts = new string[] {"test1.ysmc.net.cn" },    Path = "{**catch-all}"}    },    new RouteConfig()    {RouteId = "blazor",ClusterId = "blazor",Match = new RouteMatch{    Hosts = new string[] {"test2.ysmc.net.cn" },    Path = "{**catch-all}"}    }};var clusters = new[]{    new ClusterConfig()    {ClusterId = "admin",LoadBalancingPolicy = "RoundRobin",Destinations = new Dictionary<string, DestinationConfig>(StringComparer.OrdinalIgnoreCase){    { "admin", new DestinationConfig() { Address = "https://admin.blazor.zone" } }}    },    new ClusterConfig()    {ClusterId = "blazor",LoadBalancingPolicy = "RoundRobin",Destinations = new Dictionary<string, DestinationConfig>(StringComparer.OrdinalIgnoreCase){    { "blazor", new DestinationConfig() { Address = "https://www.blazor.zone" } }}    }};builder.Services.AddReverseProxy().LoadFromMemory(routes, clusters);

上面的配置代碼,跟配置文件方式的節點和屬性,都是對應的,照著寫就是了

"ReverseProxy": {  "Routes": {    "admin": {      "ClusterId": "admin",      "Match": {"Hosts": [ "test1.ysmc.net.cn" ],"Path": "{**catch-all}"      }    },    "blazor": {      "ClusterId": "blazor",      "Match": {"Hosts": [ "test2.ysmc.net.cn" ],"Path": "{**catch-all}"      }    }  },  "Clusters": {    "admin": {      "LoadBalancingPolicy": "RoundRobin",      "Destinations": {"admin": {  "Address": "https://admin.blazor.zone/"}      }    },    "blazor": {      "LoadBalancingPolicy": "RoundRobin",      "Destinations": {"blazor": {  "Address": "https://www.blazor.zone/"}      }    }  }}

最終效果還是依舊的完美,感謝大佬的觀看,謝謝!

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽: ASP.NET
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久综合资源网| 国产精品午夜av在线| 在线亚洲国产精品网站| 久久先锋影音av| 国产精品资源在线观看| 日本乱人伦aⅴ精品| 婷婷中文字幕综合| 国产日韩在线一区二区三区| 国产精品热久久久久夜色精品三区| 丁香亚洲综合激情啪啪综合| 欧美日本韩国一区二区三区视频| 免费精品视频在线| 羞羞答答国产精品www一本 | 在线电影院国产精品| 天堂va蜜桃一区二区三区 | 亚洲电影第三页| 亚久久调教视频| 一区二区成人在线视频| 国产精品手机视频| 一区二区三区欧美久久| 国产精品主播| 亚洲sss视频在线视频| 美女尤物久久精品| 五月天激情小说综合| 久久久久久久久久久一区| 五月婷婷另类国产| 在线观看成人免费视频| 久久99精品久久久久久| 欧美一二三区在线观看| 丁香一区二区三区| 日韩精品专区在线| 91天堂素人约啪| 日本一区二区在线不卡| 一区精品在线| 自拍视频在线观看一区二区| 一区二区自拍| 亚洲一区二区三区在线| 色婷婷国产精品| 国产一区二区在线观看视频| 欧美成人一区二区三区| 99久久精品免费看国产| 国产欧美综合在线| 亚洲激情婷婷| 日韩主播视频在线| 欧美酷刑日本凌虐凌虐| 国产九色精品成人porny| 欧美成人精品二区三区99精品| 99久久99久久综合| 中文字幕一区二区三区蜜月| 亚洲视频二区| 久久国产欧美日韩精品| 欧美α欧美αv大片| 亚洲欧美影院| 樱花草国产18久久久久| 色婷婷综合久久久久中文一区二区 | 国产经典欧美精品| 精品国产一区二区精华| 欧美精品成人| 亚洲乱码国产乱码精品精98午夜| 一本色道精品久久一区二区三区| 亚洲大片精品永久免费| 欧美性色黄大片| 成人污污视频在线观看| 自拍偷拍亚洲综合| 欧美在线综合| 国产精品亚洲专一区二区三区| 欧美人与禽猛交乱配视频| 亚洲欧美另类小说| 色综合久久天天综合网| 国产白丝精品91爽爽久久| 国产精品欧美极品| 日本黄色一区二区| 成人激情小说乱人伦| 中文字幕在线一区免费| 色哟哟在线观看一区二区三区| 久久综合色婷婷| 国产区欧美区日韩区| 国产真实乱子伦精品视频| 欧美国产亚洲另类动漫| 久久在线精品| 99免费精品在线观看| 亚洲资源在线观看| 51精品视频一区二区三区| 亚洲午夜高清视频| 婷婷开心激情综合| 精品国产百合女同互慰| 亚洲一区精彩视频| 丰满放荡岳乱妇91ww| 一区二区三区欧美亚洲| 51精品视频一区二区三区| 亚洲图片在线| 久久99精品国产麻豆婷婷洗澡| 国产人妖乱国产精品人妖| 欧美中文字幕| 国产成人亚洲精品狼色在线| 一区精品在线播放| 麻豆精品网站| 国产成人啪午夜精品网站男同| **网站欧美大片在线观看| 欧美乱熟臀69xxxxxx| 国内一区二区在线视频观看| 免费欧美高清视频| 国产欧美日韩在线观看| 在线精品亚洲一区二区不卡| 欧美黄污视频| 精品在线你懂的| 亚洲欧美日韩在线| 日韩精品一区二| 免费看的黄色欧美网站| 不卡av在线免费观看| 五月婷婷综合在线| 亚洲国产精品av| 欧美日韩一区不卡| 99国产精品视频免费观看一公开| 国产a区久久久| 亚洲18色成人| 欧美国产欧美亚州国产日韩mv天天看完整| 欧洲精品一区二区三区在线观看| 韩国自拍一区| 国产精品一线二线三线精华| 亚洲自拍另类综合| 国产日韩欧美综合一区| 在线成人免费观看| 久久精品官网| 韩日在线一区| 成人久久视频在线观看| 日本aⅴ精品一区二区三区| 中文字幕一区二区三区视频| 日韩一级成人av| 91行情网站电视在线观看高清版| 精品999网站| bt欧美亚洲午夜电影天堂| 日本三级亚洲精品| 一区二区三区中文字幕在线观看| 久久蜜臀中文字幕| 欧美日韩国产精品自在自线| 国产精品色网| 欧美女激情福利| 国产91丝袜在线播放| 婷婷六月综合亚洲| 亚洲精品成人a在线观看| 国产校园另类小说区| 欧美日韩国产三级| 亚洲欧美大片| 在线播放一区| 欧美黄色免费| av在线不卡免费看| 国产成人久久精品77777最新版本| 免费欧美日韩国产三级电影| 亚洲国产三级在线| 亚洲欧美自拍偷拍色图| 国产日本欧美一区二区| 精品国产成人系列| 欧美一级久久久| 欧美性一二三区| 久久久久91| 亚洲一区免费看| 韩日视频一区| 欧美在线国产| 91免费版在线| av电影在线观看完整版一区二区| 国产乱子伦视频一区二区三区| 美脚の诱脚舐め脚责91| 三级久久三级久久久| 亚洲国产日产av| 洋洋成人永久网站入口| 亚洲卡通动漫在线| 亚洲视频小说图片| 亚洲精品在线免费播放| 日韩精品中文字幕在线一区| 91精品久久久久久久99蜜桃 | 精品国产免费一区二区三区四区| 538prom精品视频线放| 欧美日韩另类国产亚洲欧美一级| 色呦呦日韩精品| 免费久久久一本精品久久区| 亚洲一区日韩| 免费看亚洲片| 久久久久久色| 久久一区免费| 老妇喷水一区二区三区| 日本精品视频一区二区| 色天天综合色天天久久| 日本福利一区二区| 欧美午夜片在线看| 欧美午夜影院一区| 欧美伊人久久大香线蕉综合69| 欧美最猛黑人xxxxx猛交| 欧美亚洲一区二区三区四区| 欧美日韩一区二区三区免费看| 欧美美女网站色| 欧美一级夜夜爽| 2021久久国产精品不只是精品| 久久久久国产免费免费| 国产女人18水真多18精品一级做| 欧美精品在欧美一区二区少妇| 欧美肥妇bbw| 精品乱人伦小说| 日韩三级免费观看| 久久伊人中文字幕|