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

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控件都有自…

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 …

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…

在 .NET 中使用 FluentValidation 进行参数验证

不用说,参数验证很重要,无效的参数,可能会导致程序的异常。如果使用Web API或MVC页面,那么可能习惯了自带的规则验证,我们的控制器很干净:public class User {[Required]public string FirstName { get; se…

在win10系统下怎样快速切换任务视图

2019独角兽企业重金招聘Python工程师标准>>> 切换窗口:Alt Tab 任务视图:Win Tab (松开键盘界面不会消失) 切换任务视图:Win Ctrl 左/右 创建新的虚拟桌面:Win Ctrl D 关闭当前虚拟桌面:Win Ctrl F4…

Linux上搭建Samba,实现windows与Linux文件数据同步

一 环境介绍 1. 本地win10 2. Linux (centos7.4) 注:因为运营商方面禁止smb协议,导致无法在云服务器上使用smb,如果不是在虚拟机上操作,而是在云服务器上操作,建议还是使用 filezillaxshell组合 或者 使用finalshell等…

A5-1和DES两个加密算法的学习

A5-1加密算法 1、基本原理 A5-1加密算法是一种流password,通过密钥流对明文进行加密。然后用密钥流进行对密文的解密操作。 这样的算法主要用于GSM加密。也就是我们平时打电话的时候。通信数据发送到基站,基站发送到还有一个基站,基站发送到接…

从0到1简易区块链开发手册V0.3-数据持久化与创世区块

Author: brucefeng Email: brucefengbrucefeng.com 编程语言:Golang 1.BoltDB简介 Bolt是一个纯粹Key/Value模型的程序。该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速,可靠的数据库。 Bolt…

ELK之elasticsearch5.6的安装和head插件的安装

这里选择的elasticsearch为5.6的新版本,根据官方文档有几种暗装方式: https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html 这里选择rpm包安装https://www.elastic.co/guide/en/elasticsearch/reference/curre…

Nginx 基础(一)

一 、Nginx简述 Nginx是一个开源、高性能、可靠的HTTP中间件、代理服务。二 、常见的HTTP服务 1. HTTPD-Apache基金会 2. IIS-微软 3. GWS-Google 4. Nginx三、为什么选择Nginx 原因一:IO多路复用epoll (主要解决了并发性的问题) 注1&#xf…

ASP.NET Core高性能服务器HTTP.SYS

如果我们只需要将ASP.NET CORE应用部署到Windows环境下,并且希望获得更好的性能,那么我们选择的服务器类型应该是HTTP.SYS。Windows环境下任何针对HTTP的网络监听器/服务器在性能上都无法与HTTP.SYS比肩。[本文节选《ASP.NET Core 6框架揭秘》第18章]一、…