惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - 衡斅

基于.net C# Socket WinForm MQTT 客户端开发 基于.Net C# 通信开发-网络调试助手 基于.Net C# 通信开发-串口调试助手 基于HBuilderX+UniApp+ColorUi+UniCloud 优宝库 开发实战(一) .Net Core 跨平台开发实战-服务器缓存:本地缓存、分布式缓存、自定义缓存 redis 分布式缓存实战-redis 事务 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(4)-Excel文件读、写操作 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(3)-项目依赖注入 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(1)-Web前端页面 基于html5 plus + Mui 移动App开发(三)-食全库 基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据) 基于Html5 Plus + Vue + Mui 移动App 开发(二) 基于html5 plus + Mui 移动App开发(一) 基于百度地图的产品销售的单位查看功能设计与实现 实全软件产品自动升级管理解决方案 基于服务(Web Service)的文件管理Winform客户端实现(二) 如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件 如何通过SerialPort读取和写入设备COM端口数据
.net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集...
衡斅 · 2020-04-12 · via 博客园 - 衡斅

  1、概述
  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

  服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。

  负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

  下面我将创建.net core weapi 服务,然后使用同一服务程序源码,配置启动5177,5178,5179 三个不同端口的服务程序,作为服务集群,然后下载安装配置Nginx程序,反向代理服务集群,通过访问Nginx服务器,跳转访问由三个服务程序的服务集群。

  2、创建.net core webapi 微服务
  本人使用Visual Studio 2019 .net core 3.1 的开发环境。
  2.1、创建.net core webapi 服务项目

  

  2.2、创建Default api 控制器

  

  2.3、增加Get方法,返回配置信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace WebApp.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class DefaultController : ControllerBase
    {
        private readonly ILogger<DefaultController> _logger;
        private readonly IConfiguration _configuration;

        public DefaultController(ILogger<DefaultController> logger
            , IConfiguration config)
        {
            this._logger = logger;

            this._configuration = config;
        }
        [HttpGet()]
        public OkObjectResult Get()
        {
            var result = new
            {
                id = this._configuration["ip"],
                port = this._configuration["port"],
                now = DateTime.Now
            };
            return this.Ok(result);
        }
    }
}

  2.4、使用控制台命令启动,同一服务程序源码,配置 5177,5178,5179三个不同端口,组建三个的服务应用集群。
  dotnet webapp.dll --urls="http://*:5177" --ip="127.0.0.1" --port=5177
  dotnet webapp.dll --urls="http://*:5178" --ip="127.0.0.1" --port=5178
  dotnet webapp.dll --urls="http://*:5179" --ip="127.0.0.1" --port=5179


  3、下载安装配置Nginx
  我这边没有使用Linux或虚拟机,直接在Windows中进行安装配置。下载地址:http://nginx.org/en/download.html,下载解压后,配置Nginx服务器监听本地服务器,8080端口。

  启动Nginx服务器程序:start nginx.exe,正常启动后,我们就可以在浏览器上访问Nginx的欢迎首页:

  Nginx服务器正常后,我们开发配置Nginx反射代理5177,5178,5179三个服务程序,当我们访问http://localhost:8080,程序将跳转5177或5178或5179服务程序。


  至此,就这么简单,我们就实现了.net core 基于Nginx反向代理,服务集群负载均衡。有不当之处,欢迎指正。