系列目录:
本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。
开源地址:https://github.com/cyq1162/Taurus.MVC
本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。
Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。
Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。
Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:Java集成应用中心。
Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。
Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。
Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。
Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。
Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。
Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。
Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控。
Taurus.MVC 微服务框架 入门开发教程:架构演进:1、从单应用程序简单过渡到负载均衡。
Taurus.MVC 微服务框架 入门开发教程:架构演进:2、负载均到模块拆分负载。
Taurus.MVC 微服务框架 入门开发教程:架构演进:3、模块拆分负载到多级负载均衡。
Taurus.MVC 微服务框架 入门开发教程:运行示例:https://github.com/cyq1162/Taurus.MVC.MicroService.Demo
前言:
对于ASP.Net Core 项目,部署在Linux时,默认Kestrel不支持绑定域名。
对于需要绑定域名的,往往需要引入第三方,如:Nginx等配套使用。
而今天介绍的教程,则可以借Taurus.MVC 微服务架构的方式,直接替代Nginx使用。
下面看具体教程:
1、使用简单负载均衡架构模式:注册中心+应用中心
如果成为注册中心、或应用中心,可以看本系列第一篇,文章开头有链接。
2、注册中心:运行时绑定监听80端口:
说明:
1、绑定80端口,也即默认是接收所有的域名(只要解析到这个IP的80端口) 2、如果要绑定https,Kestrel是支持https和证书添加的。
3、注册中心默认也可以当网关使用的。
其appsettings.json配置项大约为:
{ "AppSettings": { "MicroService.Server.Name": "RegCenter",//设置为服务端运行的:注册中心 "Urls": "http://*:80" } }
必要配置仅需要将微服务配置为注册中心,然后绑定80端口即可。
需要配置https证书的,下文后面补充了教程(2023-03-10)。
然后静静等待应用中心上门即可。
3、应用中心:模块注册名称填写要绑定的:域名即可。
说明:
1、配置客户端模块名称为需要绑定的域名,如:xxx.xxx.com 2、指定注册中心的地址。
其appsettings.json配置项大约为:
{ "AppSettings": { "MicroService.Client.Name": "www.a.com", "MicroService.Client.RegUrl": "http://localhost:80", "Urls": "http://*:0" } }
这里内部仅配置http即可,因为它只与注册中心通讯,内部通讯无需要https。
结合上一篇教程:Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
可以简单实现负载均衡,想开多少个,就运行启动.NET程序多少次,不需要修改任何配置。
4、多个域名多个项目:
重复步骤三即可,当然,注册中心(当前即网关)也需要部署相应的https证书。
5、运行演示结果示例:
流程:
1、注册中心监听5000端口。 2、应用中心注册www.a.com域名。 3、访问:www.a.com:5000的请求
运行结果:
6:补充Https证书的使用:
仅需要把下载的证书和密码,以如下格式,放到默认目录App_Data/ssl下即可,后续由框架自行处理。
如果没有域名,无法创建证书,在本地开发过程,想体验https的效果。
则可以虚拟一个,以测试使用,以下为教程:
补充2:NETCore 开发环境使用OpenSSL创建https虚拟证书
证书通常的创建过程描述:
1、创建一个root根证书,然后导入系统环境中,让其成为可信任证书。 2、根据需要创建虚拟域名证书,用root根证书签名一下,然后可以分发给程序使用。 因此,该过程最少一共至少需要创建两个证书,每多一个域名可重复步骤2。
下面为使用OpenSSL创建https证书的过程:
1、安装openssl:
下载地址:https://slproweb.com/products/Win32OpenSSL.html
本人默认安装版本:
一路安装,默认安装路径:C:\Program Files\OpenSSL-Win64
2、管理员身份运行cmd命令:
并切换到该bin目录下:cd C:\Program Files\OpenSSL-Win64\bin
3、生成证书过程(二合一方式,执行后,可以关注一下安装目录下产生的对应文件)
----------步骤一:只创建根证书密钥(Key文件,不创建根证书)-------------
命令:openssl genrsa -out root.key 2048
----------步骤二:1、创建域名签名中间件(CSR文件)---------------
命令:openssl req -new -key root.key -out www.sameples.com.csr
中间填写省市区等信息,随便填。
期间:Common Name,填写要绑定的域名,如:www.samples.com。
还有设置密码,如:123456
----------步骤二:2、创建域名证书(CER文件)---------------
命令:openssl x509 -req -days 365 -in www.sameples.com.csr -signkey root.key -out www.sameples.com.cer -extfile http.ext
可以在根目录下创建一个文件:http.ext,里面填写对应域名信息:
keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, clientAuth subjectAltName=@SubjectAlternativeName [ SubjectAlternativeName ] DNS.1=www.samples.com
----------步骤二:3、转换域名证书格式(CER转PFX文件,方便程序使用)---------------
命令4:openssl pkcs12 -export -out www.samples.com.pfx -inkey root.key -in www.sameples.com.cer
然后输入2次密码,比如123456,即可创建该域名证书。
4:将证书导入可信任列表:
快捷键:Win+R,运行命令:
在证书处右键导入,选择刚创建的证书(CER格式):导入即可。
5:添加Host文件,进行本地域名解析:
6:接下来即可用程序运行
可以放到iis运行试看,也可代码:
比如,代码下面演示多个证书使用方式:
运行成功:
提示说明:如果一开始没成功,下一次测试需要重启浏览器,否则https状态是不会变更的。
网上有很多教程,中间也遇到过很多问题,唯一在本机环境能成功测试通过的,是以下教程:
参考教程:https://www.cnblogs.com/chenxf1117/p/15119692.html
其它未通过测试的教程如(泛域名的创建):
https://www.cnblogs.com/xiangyuecn/p/8365634.html
总结:
通过Taurus.MVC 微服务功能,以前Kestrel无法支持域名绑定的问题,就此实现了。
下一篇,讲述利用Taurus.MVC 微服务功能,如何实现轻松的版本升级功能。
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号 |
Donation(扫码支持作者):支付宝: |
Donation(扫码支持作者):微信: |