前言

今天,王子与大家闲谈一下如何在Windows下使用Nginx+Tomcat做负载均衡的完整步骤,小伙伴们可以试着自己动手实践一下哦。

另外说明一点,本篇文章是纯实操文章,不涉及太多原理的解读,后期可能单独开一个专栏来深入讨论Nginx的原理。

好了那我们直接开始。

下载Nginx

首先我们去官网下载一个Windows稳定版本的Nginx,官网地址:http://nginx.org/en/download.html

下载后解压到想要的位置,小伙伴们要注意了,千万不要把它解压到带有中文的文件夹下,会导致不能启动的。

Window上的启动非常简单,我们只要进入文件夹,双击nginx.exe就可以直接启动了

nginx的默认端口是80端口,由于王子电脑上的80端口被ISS占用,所以我们修改一下端口,改成81端口。

修改端口也很容易,直接进入conf文件夹,打开nginx.conf文件,修改如下位置即可:

修改后,我们直接双击就可以启动Nginx服务了,你会看到一个一闪而过的命令窗口,不用在意,其实已经启动成功了,我们在浏览器输入http://localhost:81/,就可以看到Nginx的启动页面了。

这样我们的Nginx环境就部署好了。

配置文件介绍

现在我们有了Nginx的环境,接下来我们的目标是通过Nginx将用户的请求反向代理到Tomcat上,那么我们首先启动一台Tomcat服务器,默认配置即可。

然后我们打开nginx.conf文件,王子给大家简单介绍一下里面的一些配置的含义。

        listen       81;
server_name localhost;

listen:刚才我们已经改过了,它就是代表Nginx的监听端口,这个没什么可说的

server_name:表示监听到之后请求转到哪里,默认直接转到本地。

        location / {
root html;
index index.html index.htm;
}

location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

root:里面配置了root这时表示当匹配这个请求的路径时,将会在html这个文件夹内寻找相应的文件。

index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。

除了这些配置,我们再补充一个配置

proxy_pass,它表示代理路径,相当于转发,而不像之前说的root必须指定一个文件夹。

那么现在我们修改一下配置文件,如下:

location / {
proxy_pass http://localhost:8080;
}

然后我们让Nginx重新加载配置文件,回到Nginx根目录执行nginx -s reload命令就可以了。

然后我们再重新打开Nginx的页面,小伙伴们,是不是发现它已经打开了Tomcat页面呢。

实现负载均衡的配置

刚刚我们已经实现了请求的反向代理,从Nginx转发到了Tomcat上,那么如何配置可以实现一个Tomcat的负载均衡集群呢,其实也是很容易的。

配置如下:

upstream localtomcat {
server localhost:8080;
} server{
location / {
proxy_pass http://localtomcat;
}
#......其他省略
}

小伙伴们,划重点了,这里一定要注意。upstream后的名字一定不要带下划线,Nginx是不认下划线的,会导致转发异常。

那么如何添加新的tomcat实现负载均衡呢?

我们修改端口,新打开一个tomcat服务器,端口为8081,然后增加配置如下:

upstream localtomcat {
server localhost:8080;
server localhost:8081;
}

再重新加载Nginx的配置文件,你会发现,负载均衡已经实现了,现在会向两台tomcat转发请求了。

而且我们可以设置weight=数字来指定每个tomcat的权重,数字越大,表明请求到的机会越大。

配置如下:

upstream localtomcat {
server localhost:8080 weight=1;
server localhost:8081 weight=5;
}

总结

好了,到这里我们已经在Windows下搭建好了Nginx+Tomcat的负载均衡集群。

王子今天的分享就到这里了,欢迎小伙伴们继续关注后续文章。

往期文章推荐:

什么是消息中间件?主要作用是什么?

常见的消息中间件有哪些?你们是怎么进行技术选型的?

你懂RocketMQ 的架构原理吗?

聊一聊RocketMQ的注册中心NameServer

Broker的主从架构是怎么实现的?

RocketMQ生产部署架构如何设计

RabbitMQ和Kafka的高可用集群原理

RocketMQ的发送模式和消费模式

讨论一下秒杀系统的技术难点与解决方案

Windows下使用Nginx+Tomact做负载均衡的更多相关文章

  1. Windows下使用Nginx+tomcat配置负载均衡

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口 ...

  2. Jenkins服务使用nginx代理服务器做负载均衡

    学习nginx代理服务器做负载均衡的使用 在本地安装Nginx 1.下载nginx http://nginx.org/en/download.html         下载稳定版本,以nginx/Wi ...

  3. [Linux]nginx tomcat做负载均衡

    之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学须要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的port启动. ...

  4. Nginx+tomcat 做负载均衡

    架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomcat) 优点:实现了可弹性化的架构,在压力 ...

  5. Ubuntu下实现Nginx+Tomcat实现负载均衡

    先说一下为什么写这个文章,在性能测试过程中,我们可能会关注很多指标,比如CPU.IO.网络.磁盘等,通过这些指标大致可以判断哪个环节遇到了性能瓶颈,但是当这些指标无法判断出性能瓶颈时,我们可能就需要对 ...

  6. 【Nginx】Windows平台下配置Nginx服务实现负载均衡

    前言:废话不多说了,直接上步骤. 系统环境:win10 测试用的开发环境和服务类型:VS2022 + DotNet 6 + WebApi 1.本地先创建一个webapi项目,用于测试使用. 2.新建一 ...

  7. Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  8. 【转载】Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  9. 在Nginx中做负载均衡配置的实例讲解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法. 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某 ...

随机推荐

  1. Linux进程管理与性能监控

    1. 进程管理工具 这一节我们介绍进程管理工具: 使用进程管理工具,我们可以查询程序当前的运行状态,或终止一个进程: 任何进程都与文件关联:我们会用到lsof工具(list opened files) ...

  2. 无锁机制----比较交换CAS Compare And Swap

    一.锁与共享变量 加锁是一种悲观的策略,它总是认为每次访问共享资源的时候,总会发生冲突,所以宁愿牺牲性能(时间)来保证数据安全. 无锁是一种乐观的策略,它假设线程访问共享资源不会发生冲突,所以不需要加 ...

  3. python基础 Day10

    python Day10 函数的参数升级版 形参角度 万能参数*arg #在函数定义时,*代表聚合.他将所有的位置参数聚合成一个元组,赋值给了args def test(*args): print(& ...

  4. Robotium和Espresso大PK——速度篇

    引言 Espresso和Robotium都是android UI自动化测试框架,且都是建立在Android Instrument的基础之上.对于测试人员来说,UI测试应该具备如下三个特点:1. 容易编 ...

  5. goalng包和命令工具

    1. 包简介 任何包系统设计的目的都是为了简化大型程序的设计和维护工作,通过将一组相关的特性放进一个独立的单元以便于理解和更新,在每个单元更新的同时保持和程序中其它单元的相对独立性.这种模块化的特性允 ...

  6. paramiko 模块 ---- python2.7

    模拟远程执行命令: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import paramiko   #设置日志记录 paramiko ...

  7. 2020.5.24 第四篇 Scrum冲刺博客

    Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.每日站立会议 1.1 会议照片 1.2 项目完成情况 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3. ...

  8. akka-grpc - 基于akka-http和akka-streams的scala gRPC开发工具

    关于grpc,在前面的scalaPB讨论里已经做了详细的介绍:google gRPC是一种全新的RPC框架,在开源前一直是google内部使用的集成工具.gRPC支持通过http/2实现protobu ...

  9. Mysql安装错误

    [问题一]在安装mysql时遇到以下错误 执行./mysqld --initialize 后 ./bin/mysqld: error while loading shared libraries: l ...

  10. Unity透明地形

    http://answers.unity3d.com/questions/1162779/unity-5-transparent-terrain-shader.html http://answers. ...