目录
一、nginx配置文件介绍
二、nginx的核心功能
1)反向代理
<1>正向代理
<2>反向代理
<3>准备工作
2)负载均衡
3)负载均衡策略
4)动静分离
三、Nginx的高可用性
1)准备两台虚拟机并都安装nginx
2)需要在每一个nginx服务器上安装keepalived
3)修改keepalived的配置文件内容
4)将 nginx_check.sh脚本文件放入/usr/local/src下
5)分别启动keepalived
6)访问虚拟ip
7)关闭主节点nginx并再次访问
一、nginx配置文件介绍
1)首先进入你自己的nginx安装的目录下找到nginx.conf文件并进入
2)进入nginx.conf文件后(vi nginx.conf),我们可以看到如下内容:
3)自定义一个server
注意:修改了nginx配置文件,必须重新加载配置文件
./nginx -s reload
一个nginx可以对应多个server
4) 创建一个目录main并在该目录下创建一个main.html
访问81端口:
(如果访问失败看是否放行了81端口)
二、nginx的核心功能
1)反向代理
下面我们用借钱的例子来讲解一下正、反向代理。
<1>正向代理
拿借钱打个比方,A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,在这个过程中B就扮演了一个正向代理的角色,这个过程中,真正借钱的人是谁,C是不知道的。
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
<2>反向代理
还用借钱的例子,A想向C借钱,然后C借给他了,但是实际上这个钱可能C向B借的~至于钱到底是谁的,A是不知道的。这里的C扮演着一个反向代理的角色,客户不知道真正提供服务的人是谁。
反向代理隐藏了真实的服务端,对于客户来说不知道访问的是哪台服务器。
<3>准备工作
1、准备一台真实服务器----tomcat项目。----把一个springboot项目并放入linux服务器系统中。
2、运行springboot项目
java -jar springboot01-demo01.jar
3、配置nginx来代理上面springboot真实项目服务
记得重新加载nginx配置文件:
sbin目录下(./nginx -s reload)
放行端口号:firewall-cmd --add-port=82/tcp --zone=public --permanent
重启防火墙:systemctl restart firewall
4、浏览器访问nginx
2)负载均衡
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
负载均衡通常配合nginx一起使用
准备两台真实服务器:
nginx重新加载配置文件。
3)负载均衡策略
- 轮询策略。
- 权重策略。
- ip_hash策略。
- 第三方插件。
(1)轮询策略(默认使用)
(2)权重策略:----适合服务器的配置不同,被访问的频率不同。
(3)ip_hash策略: ----根据客户端的ip分配相应真实服务器。
(4)第三方插件:(大多数付费)
4)动静分离
把静态资源【css,js,img】交于nginx来处理,而动态资源【接口,jsp】还是有真实服务器处理。
好处: 当修改静态资源时,无需对每个真实服务器的静态资源做修改,只需要修改nginx一处的静态资源
创建一个springboot项目
配置nginx进行代理:
在nginx中新建static文件夹将静态资源放入,并运行jar包进行访问。
三、Nginx的高可用性
思考:
1)nginx如果出现问题该怎么办?---------提高 高可用性
2)当主节点宕机后,如何让客户访问到从节点?-------虚拟一个ip,客户只需访问虚拟ip即可
3)如何让主节点和从节点之间能够切换?------使用keepalived组件来解决上面的问题,它会自动监控主从的状态,并可以帮nginx虚拟ip,还可在主从之间切换。
下面进入准备工作:
1)准备两台虚拟机并都安装nginx,192.168.232.166 192.168.232.167
2)需要在每一个nginx服务器上安装keepalived
yum install keepalived 安装keepalived
rmp -q -a keepalived 检查是否安装keepalived
默认安装路径:/etc/keepalived
3)修改keepalived的配置文件内容
将/etc/keepalived下的配置文件内容替换为下面的内容并进行修改:
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_ server 192.168.232.166
smtp_connect_timeout 30
router_id 192.168.232.166
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
192.168.232.50
}
#将 track_script 块加入 instance 配置块
track_script {
chk_http_port #执行 Nginx 监控服务
}
}
4)将 nginx_check.sh脚本文件放入/usr/local/src下:
#!/bin/bash
# 检查是否开启nginx
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl stop keepalived
fi
两台虚拟机都要进行以上操作。
5)分别启动keepalived
systemctl start keepalived.service
并将两台nginx都开启:在其sbin目录下./nginx
6)访问虚拟ip
7)关闭主节点nginx并再次访问
/usr/soft/nginx/sbin/nginx -s stop 关闭nginx