.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.mzph.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