Nginx负载均衡讲解

产品出现瓶颈

公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户

在这里插入图片描述

但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。

在这里插入图片描述

于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求

在这里插入图片描述

Nginx出现

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

如上所述,出现瓶颈后:我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。

Nginx作用

Http代理,反向代理

正向代理

正向代理类似一个跳板机,代理访问外部资源

比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了

正向代理的用途:

  • 访问原来无法访问的资源,如google
  • 可以做缓存,加速访问资源
  • 对客户端访问授权,上网进行认证
  • 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

在这里插入图片描述

反向代理

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

反向代理的用途:

  • 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
  • 负载均衡,通过反向代理服务器来优化网站的负载

在这里插入图片描述

总结:

  • 正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端
  • 反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端

负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询加权轮询Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的。

轮询

顾名思义,轮流访问服务端

在这里插入图片描述

加权轮询

权重高,能得到的更多访问(比如某个服务器性能较好,可以设置高权重)

在这里插入图片描述

ip hash

对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题

在这里插入图片描述

动静分离

在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

说白了,就是静态资源交给了nginx来访问,减少服务器负担

在这里插入图片描述

Nginx的安装

下载nginx

http://nginx.org/en/download.html下载稳定版本

在这里插入图片描述

启动nginx

两种方式都可以使用

  • 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过
  • 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可

检查nginx是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

在这里插入图片描述

配置监听

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可

修改之后,需要执行命令 nginx -s reload 即可让改动生效

在这里插入图片描述

关闭nginx

如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

  • 输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
  • 使用taskkill taskkill /f /t /im nginx.exe(终止进程)

Nginx常用命令

nginx 启动

nginx -s stop 停止

nginx -s quit 安全退出

nginx -s reload 重新加载配置文件

ps aux|grep nginx 查看nginx进程

实战讲解

现在有个项目,我们分别用8080/8081进行启动

正常的访问,是用不同的端口进行访问

在这里插入图片描述

在这里插入图片描述

现在我们用nginx进行改造,修改其配置文件

  • listen、server_name不用说,是访问的ip和端口
  • location指的是代理:对应server_name,需要修改的是proxy_pass参数,里面的kuangstudy对应upstream名称
  • upstream指的是负载均衡,weight是权重,值一样就轮询,值越大权重越大

在这里插入图片描述

reload一下nginx,再访问,就能发现nginx已经代理了服务了

在这里插入图片描述
由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值