.NET 反向代理-YARP 部署Https(SSL)

相關文章:

  • .NET 反向代理-YARP

  • .NET 反向代理-YARP 根據域名轉發

  • 分享一個基于Abp 和Yarp 開發的API網關項目

  • 使用 Yarp 做網關

  • YARP(Yet Another Reverse Proxy)是使用 .NET 構建的高度可定制的反向代理

  • C# 開源一個基于 yarp 的 API 網關 Demo,支持綁定 Kubernetes Service

  • 微軟的反向代理項目 ReverseProxy 更名為 Yarp.ReverseProxy

? ? ?YARP 作為反向代理中間件,那就無可避免需要使用到 Https 去部署項目,那 YARP 要怎么去實現呢,本來以為?YARP 會有一套自己的實現,在翻閱了資料后發現,根本不是我想的那樣,按照?YARP 官方文檔的說法,是按照 .Net Core 原本的那一套去實現,好家伙,真的沒想到啊,下面我貼出官方原文,大伙看一看,瞧一瞧

0e71f815e8ffb79ab4bdf02f1cd908ab.png

  IIS就不多說了,這個畢竟只能在 windows 上使用,下面我說說 在?Kestrel 怎么設置 Https 吧,按照我的慣例,直接貼配置文件

"Kestrel": {"Endpoints": {"MySniEndpoint": {"Url": "https://*:5209","SslProtocols": [ "Tls11", "Tls12" ],"Sni": {"test1.ysmc.net.cn": {"Certificate": {"Path": "[path]\\test1.ysmc.net.cn_server.pfx","Password": "pfx密碼"}},"test2.ysmc.net.cn": {"Certificate": {"Path": "[path]\\test2.ysmc.net.cn_server.pfx","Password": "pfx密碼"}}}}},//,默認配置,當沒有配置的時候,默認回落到這個配置   "Certificates": {"Default": {"Path": "[path]\\test1.ysmc.net.cn_server.pfx","Password": "pfx密碼"}}

  因為我們需要配置多個域名,所以使用到了 Sni,下面是官方對一 Sni 的部分介紹,感興趣的小伙伴可以過去看看,傳送門:https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0#sni-in-configuration-1


SNI in configuration

Kestrel supports SNI defined in configuration. An endpoint can be configured with an?object that contains a mapping between host names and HTTPS options. The connection host name is matched to the options and they are used for that connection.Sni

The following configuration adds an endpoint named?that uses SNI to select HTTPS options based on the host name:MySniEndpoint

HTTPS options that can be overridden by SNI:

  • Certificate?configures the?certificate source.

  • Protocols?configures the allowed?HTTP protocols.

  • SslProtocols?configures the allowed?SSL protocols.

  • ClientCertificateMode?configures the?client certificate requirements.

The host name supports wildcard matching:

  • Exact match. For example,?matches?.a.example.orga.example.org

  • Wildcard prefix. If there are multiple wildcard matches then the longest pattern is chosen. For example,?matches?and?.*.example.orgb.example.orgc.example.org

  • Full wildcard.?matches everything else, including clients that aren't using SNI and don't send a host name.*

The matched SNI configuration is applied to the endpoint for the connection, overriding values on the endpoint. If a connection doesn't match a configured SNI host name then the connection is refused.


下面一起看看配置后的效果吧,非常的完美

87dbaad5a65e060ab7d7638ae3151343.png

?  整個完整的配置文件我也貼出來吧,至于證書怎么申請的,大家有域名的可以到域名服務商里申請免費1年期的,沒有域名的話,可以自己改一下hosts 文件 然后自己自簽名一個,都是可以的

appsettings.json

{"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"Kestrel": {"Endpoints": {"MySniEndpoint": {"Url": "https://*:5209","SslProtocols": [ "Tls11", "Tls12" ],"Sni": {"test1.ysmc.net.cn": {"Certificate": {"Path": "[path]\\test1.ysmc.net.cn_server.pfx","Password": "pfx密碼"}},"test2.ysmc.net.cn": {"Certificate": {"Path": "[path]\\test2.ysmc.net.cn_server.pfx","Password": "pfx密碼"}}}}},"Certificates": {"Default": {"Path": "[path]\\test1.ysmc.net.cn_server.pfx","Password": "pfx密碼"}}},"ReverseProxy": {"Routes": {"baidu": {"ClusterId": "baidu","Match": {"Hosts": [ "test1.ysmc.net.cn" ],"Path": "{**catch-all}"}},"blazor": {"ClusterId": "blazor","Match": {"Hosts": [ "test2.ysmc.net.cn" ],"Path": "{**catch-all}"}}},"Clusters": {"baidu": {"LoadBalancingPolicy": "RoundRobin","Destinations": {"baidu": {"Address": "https://www.baidu.com/"}}},"blazor": {"LoadBalancingPolicy": "RoundRobin","Destinations": {"blazor": {"Address": "https://www.blazor.zone/"}}}}}
}

?原文鏈接:https://www.cnblogs.com/ysmc/p/16717580.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282402.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282402.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282402.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

shell腳本--cut命令

bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 選項說明 cut命令將行按指定的分隔符分割成多列,它的弱點在于不好處理多個分隔符重復的情況,因此經常結合tr的壓縮功能。 -b:按字節篩選&#xff…

12C RAC for ASM添加磁盤步驟

RHEL 7.2使用EMC Powerpath擴容2T磁盤空間,需要添加至以用12C RAC for ASM系統中。下面是具體步驟,主機人員告知擴容別名為data_center_16、data_center_17 1:linux 7 系統下添加映射存儲LUN(無需重啟)1>查看機器HBA卡信息--兩個節點機器都…

Windows 下 Redis 的下載和安裝

一 安裝redis 1. 下載redis https://github.com/MicrosoftArchive/redis/releases 注: 如果上面網址下載不了, 就到這里下載 https://download.csdn.net/download/m_nanle_xiaobudiu/104370342. 解壓壓縮文件夾3. 運行redis服務端到此 , redis已經可以正常使用了,但是為了方便…

什么是行內塊元素?

2019獨角獸企業重金招聘Python工程師標準>>> 我們都知道行內元素和塊級元素,在實際開發中,經常會聽到行內塊元素,那么什么是行內塊元素呢? 行內塊元素實際就是把塊元素以行的形式展現,保留了塊元素可以設置的對應CSS屬…

WPF-08 控件模板

模板是描述控件外觀,WPF中每個控件都有一個默認的模板,你可以通過定義模板來重寫控件可視化外觀和行為,WPF中有兩種常用的模板Control Template和Data TemplateControl Template控件模板定義了控件的可視化外觀,所有的UI控件都有自…

玄學搜索\隨稽化

正解又不會寫,又懶得去想 只好每次考試大大暴力,維持一下生活了 ----------------------- P1337 [JSOI2004]平衡點 / 吊打XXX 題目描述 有n個重物,每個重物系在一條足夠長的繩子上。每條繩子自上而下穿過桌面上的洞,然后系在一起。…

第0次作業

問題1:你為什么選擇計算機專業?你認為你的條件如何? 答:我平時比較喜歡研究一些自己認為神秘的東西,我認為計算機就是這樣的神秘東西!所以我選擇這個專業!我認為我自己可以學會計算機這個專業!我對自己有信…

Nginx +Tomcat 實現動靜態分離(轉)

Nginx Tomcat 實現動靜態分離 動靜態分離就是Nginx處理客戶端的請求的靜態頁面(html頁面)或者圖片,Tomcat處理客戶端請求的動態頁面(jsp頁面),因為Nginx處理的靜態頁面的效率高于Tomcat。 一.Nginx簡介: Ng…

Beanstalked的初步了解和使用(包括利用beanstalkd 秒殺消息隊列的實現)

一 Beanstalkd 是什么 Beanstalkd,一個高性能、輕量級的分布式內存隊列系統二 Beanstalkd 特性 1. 優先級(priority) 注:優先級就意味 支持任務插隊(數字越小,優先級越高,0的優先級最高&#…

WPF效果第二百篇之再玩Gamma曲線

前面效果中使用比較low的方式實現了2.4的Gamma曲線;雖說后面加了點動畫呈現效果,但也就是個過渡版;今天才基本符合需求的效果:1、還是基于WPF效果第一百七十八篇之貝塞爾曲線他來實現的:3個ListBox 3個LandmarkControl2、在LandmarkControl增加插點位事件View:LandmarkControl …

2018企業面試總匯(答案請自行搜羅) 新增19年阿里面題(反向拓展技術棧)

Java 1.多個線程同時讀寫,讀線程的數量遠遠大于寫線程,你認為應該如何解決并發的問題?你會選擇加什么樣的鎖? 2.JAVA的AQS是否了了解,它是干嘛的? 3.除了synchronized關鍵字之外,你是怎么來保障…

skynet源碼閱讀5--協程調度模型

注:為方便理解,本文貼出的代碼部分經過了縮減或展開,與實際skynet代碼可能會有所出入。 作為一個skynet actor,在啟動腳本被加載的過程中,總是要調用skynet.start和skynet.dispatch的,前者在skynet-os中…

ASP.NET Core GRPC 和 Dubbo 互通

一.前言Dubbo 是比較流行的服務治理框架,國內不少大廠都在使用。以前的 Dubbo 使用的是私有協議,采集用的 hessian 序列化,對于多語言生態來說是極度的不友好。現在 Dubbo 發布了新版本 v3,推出了基于 gRPC 的新協議 Triple&#…

詳解C# 迭代器

[引用:https://www.cnblogs.com/yangecnu/archive/2012/03/17/2402432.html] 迭代器模式是設計模式中行為模式(behavioral pattern)的一個例子,他是一種簡化對象間通訊的模式,也是一種非常容易理解和使用的模式。簡單來說,迭代器模…

利用redis List隊列簡單實現秒殺 PHP代碼實現

一 生產者producer部分 --------------------------------producer 部分注釋------------------------------------------------------------ 用戶在頁面請求之后, 獲取到用戶uid , 跳轉到這個加入隊列的方法 (這里直接在producer中模擬了多個uid) 在方法內部判斷redis隊列長…

使用Filezilla 與 linux遠程服務器傳輸文件時,設置默認打開編輯器

1. 點擊編輯 2. 選擇設置,點擊文本編輯 3. 設置編輯器目錄 4. 確定作用: 這樣設置之后,可以實現在遠程站點欄直接下載并使用phpstorm編輯的作用 正常需要下載之后,再去本地相應下載目錄打開,然后再進行上傳文件&#x…

SDOI2017 新生舞會

01規劃 a1a2a3...ai/b1b2b2..bi最大 設一個k 使得 a1a2a3...ai/b1b2b3...bi>k 變換式子得到 a1a2a3...ai>(b1b2b3..bi)*k a1-b1*ka2-b2*ka3-b3*k...ai-bi*k>0 ai-bi*k即流量 最大費用流二分答案 來&#xff0c;上代碼&#xff1a; #include <cmath> #include &l…

在 .NET 中使用 FluentValidation 進行參數驗證

不用說&#xff0c;參數驗證很重要&#xff0c;無效的參數&#xff0c;可能會導致程序的異常。如果使用Web API或MVC頁面&#xff0c;那么可能習慣了自帶的規則驗證&#xff0c;我們的控制器很干凈&#xff1a;public class User {[Required]public string FirstName { get; se…

在win10系統下怎樣快速切換任務視圖

2019獨角獸企業重金招聘Python工程師標準>>> 切換窗口&#xff1a;Alt Tab 任務視圖&#xff1a;Win Tab (松開鍵盤界面不會消失) 切換任務視圖&#xff1a;Win Ctrl 左/右 創建新的虛擬桌面&#xff1a;Win Ctrl D 關閉當前虛擬桌面&#xff1a;Win Ctrl F4…

uwp應用在debug模式下運行正常,編譯為release版本的時候拋出異常

原因是在代碼中使用了dynamic關鍵字&#xff0c;導致release時.net native優化了代碼造成元數據丟失 所以在代碼中要盡量不用dynamic。轉載于:https://www.cnblogs.com/poison/p/7532142.html