为什么使用nigx?
Nginx是一款高性能的Web和反向代理服务器,因为其性能优异,所以被广大运维喜欢。
其次,Nginx是一个轻量级的web服务器,对比apache来说资源消耗更低。
Nginx 处理高并发能力是十分强大的,能经受高负载的考验
Nginx支持热部署,启动简单
nginx的三大特性
(1)反向代理(正向代理)
反向代理:假如我们逛淘宝,但是淘宝有很多服务器,但是这个服务器的账户信息不互通,每登一个服务器就需要重新登录,就会很麻烦,反向代理就是由淘宝的这些服务器推出一个领头羊(代理服务器),来统一指挥所有的服务器,从而达到只要在代理服务器上登录账号就可以访问所有的服务器的效果,由这个领头羊同一分配你这个请求浏览那个服务器(就近原则)
对于而客户端来说,服务器是隐藏的
正向代理:最简单来说。家庭里面用的wifi就是一个简单的正向代理,用户连接上wifi,通过wifi连接上网,对于服务器端来说,客户端是隐藏的
实验步骤:
1、搭建nginx服务器
2、准备一个springboot的项目
1、搭建nginx服务器
注意:服务器必须在jdk环境下运行
java -jar XXXX.jar
1.2 修改nginx的配置文件
这些配置是要在代理服务器上配置的 ,项目则是部署在配置文件里面被代理的服务器里面
其中81是指定的代理服务器地址,网站访问的也是81这个端口号,然后这个81代理服务器就会自动将用户的请求分配给location里面设置的服务器地址
配置完成需要重新加载配置文件,不然配置不会生效
2、测试
192.168.223.158 是代理服务器(前面解释的领头羊)的ip ,81为配置文件的代理服务器端口号
(2)负载均衡
负载均衡就是说:当请求越来越多的时候,一台服务器处理不过来,就需要增加新的服务器来处理请求,而这就需要一种方式用来处理请求分配服务器了,提供了三种方法
1、轮询法(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。
2、weight权重模式(加权轮询)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3、ip_hash
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
(3)动静分离
就是把项目中的动态资源和静态资源分离开来,将静态资源放入代理服务器中,减少数据传输
1、启动项目
运行该工程: java -jar XXX.jar
2、修改配置
3、刷新配置并测试
nginx的高可用
如果nginx出现了短时间不可修复的错误,就会造成项目停用的经济损失,想要避免这种损失就可以设置一个备用的代理服务器
1、准备两台代理服务器
2、在两台代理服务器上都安装keepalived
yum -y install keepalived #安装keepalived
默认keepalived路径 /etc/keepalived
3、(3)修改keepalived配置文件
state:
BUCKUP 备份
MASTER主机