日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:138日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区网站| 精品一级视频| 久久先锋影音| 日韩在线二区| 欧美偷窥清纯综合图区| 国产精品红桃| 亚洲午夜国产成人| 婷婷成人在线| 久久精品99国产精品日本| 欧美韩一区二区| 国产精品嫩草影院在线看| 日韩综合一区二区| 久久精品国产999大香线蕉| 国产精品天堂蜜av在线播放| 亚洲色图综合| 婷婷综合网站| 精品视频亚洲| 久久国产88| 你懂的国产精品| 亚洲爱爱视频| 在线一区电影| 亚洲无线观看| 国产日产精品_国产精品毛片 | 亚洲午夜精品久久久久久app| 欧美aaaaaa午夜精品| 日韩一区二区三区精品| av一区在线| 国产福利电影在线播放| 国产日本久久| 日本综合精品一区| 日韩国产欧美在线播放| 日韩精品亚洲aⅴ在线影院| 中文一区二区| 日韩中文字幕区一区有砖一区 | 国产在线日韩| 精品欧美久久| 日本在线视频一区二区| 欧美一区免费| 中文字幕人成乱码在线观看| 午夜欧美视频| 中文一区二区| 国产在线欧美| 日韩伦理福利| 麻豆精品久久久| 亚洲欧美网站| 国产精品婷婷| 欧美一级二级视频| 国产精品99视频| 日本国产一区| 亚洲另类视频| 欧美激情三区| 视频一区中文字幕国产| 国产亚洲字幕| 伊人久久在线| 日本亚洲视频| 欧美亚洲国产激情| 精品国产不卡| 精品1区2区3区4区| 蜜臀av性久久久久蜜臀aⅴ四虎| 香蕉成人av| 日韩在线观看一区二区| 日韩精品第二页| 久久九九精品| 日本精品在线播放| 性欧美videohd高精| 日韩av首页| 国产日产高清欧美一区二区三区 | 亚洲日本国产| 日韩高清在线一区| 免费观看亚洲| 青青青国产精品| 亚洲香蕉视频| 亚洲性色视频| 91精品国产乱码久久久久久久| www.九色在线| 久久久天天操| 麻豆91精品视频| 精品一区二区三区中文字幕 | 91成人在线| 国产一级成人av| sm久久捆绑调教精品一区| 在线精品亚洲欧美日韩国产| 激情久久一区二区| 亚洲18在线| 亚洲精品1区| 欧美+亚洲+精品+三区| 麻豆精品一区二区综合av| 日韩欧美中文字幕一区二区三区| 日韩精品午夜| 国内精品亚洲| 综合一区二区三区| 亚洲专区欧美专区| 国产精久久一区二区| 日韩av二区| 日韩av黄色在线| 91国内精品| 九九久久国产| 日韩高清欧美激情| 国产成人精品亚洲线观看| 久久夜色精品| 日韩高清不卡一区| 99精品一区| 在线国产日韩| 成人午夜亚洲| 六月婷婷一区| 国产精久久一区二区| 国产伦理一区| 亚洲永久av| 久久九九精品| 蜜桃久久久久久久| 97视频热人人精品免费| 日韩在线观看一区二区| 国产精品一区二区精品视频观看| 日韩欧美另类一区二区| 久久国产66| 色天使综合视频| 国产精品自拍区| 欧美在线影院| 欧美日韩亚洲国产精品| 久久国产精品成人免费观看的软件| 一区二区国产在线观看| 国产传媒av在线| 日韩精品电影一区亚洲| 国产精品videossex久久发布| 婷婷精品视频| 国产一区二区三区四区五区传媒| 日韩专区视频网站| 亚洲第一区色| 久久香蕉精品香蕉| 日韩精品亚洲专区| 丝袜美腿亚洲色图| 欧美精品一区二区久久| 捆绑调教美女网站视频一区| 一级欧洲+日本+国产| 国精品一区二区| 日韩在线第七页| 国产一区国产二区国产三区 | 蜜臀av一区二区三区| 高清日韩欧美| 欧美黑人巨大videos精品| 7m精品国产导航在线| 红桃视频国产一区| 亚洲a在线视频| 亚洲天堂一区二区| 久久99高清| 久久在线91| 国产亚洲欧美日韩精品一区二区三区| 欧美日韩视频| 蜜臀精品一区二区三区在线观看| 国产精品福利在线观看播放| 国产精品免费精品自在线观看| 不卡中文字幕| 国产欧美丝祙| 成人影视亚洲图片在线| 精品网站999| 91亚洲国产| 日韩精品不卡一区二区| 日韩欧美午夜| 久久久久久黄| 国产一区亚洲| 蜜桃视频在线观看一区| 蜜桃久久久久久| 日韩精品亚洲专区| 国产精品毛片aⅴ一区二区三区| 老司机精品视频网| 正在播放日韩精品| 国产精品久久久久av电视剧| 伊人久久大香线蕉av不卡| 亚洲综合二区| 69堂免费精品视频在线播放| 亚洲精品中文字幕99999| 国产精品视频一区二区三区| 精品精品久久| 欧美日韩日本国产亚洲在线| 亚州欧美在线| 久久亚州av| 悠悠资源网久久精品| 国产精品日韩精品在线播放| 成人午夜在线| 喷白浆一区二区| 麻豆精品少妇| 99久久久久国产精品| 免费人成精品欧美精品 | 国产精品美女| 欧美色综合网| 免费毛片在线不卡| 国产精品对白| 99亚洲视频| 国产精品久久国产愉拍| 91久久在线| 中文字幕人成乱码在线观看 | 蜜臀av在线播放一区二区三区 | 日韩啪啪电影网| 蜜桃视频一区二区三区在线观看| 91亚洲一区| 国产精品xxxav免费视频| 免费久久精品视频| 欧美日韩免费观看一区=区三区| 天堂8中文在线最新版在线| 国产精品流白浆在线观看|