nginx
一、nginx的安装
1、安装nginx需要的依赖环境
任意文件下
- yum install -y gcc-c++
- yum install -y pcre pcre-devel
- yum install -y zlib zlib-devel
- yum install -y openssl openssl-devel
2、下载nginx
http://nginx.org/en/download.html
3、把下载好的nginx放入linux系统
- 创建一个自己存放的软件目录,一般目录为/usr/soft/
- 把下载好的nginx拖入软件文件下
4、创建一个目录作为nginx的安装目录
mkdir /usr/soft/nginx
5、解压nginx源码文件
tar -zxvf nginx-1.18.0
6、进入解压后的目录
cd nginx-1.18.0
7、指定nginx安装的目录
./configure --perfix=/usr/soft/nginx
8、编译(当前文件下)
make
9、安装
make install
10、查看安装nginx的目录中的内容
ls -l /usr/soft/nginx
由于我已安装过了这里多了几个
11、启动nginx
- sbin/nginx 启动nginx
- sbin/nginx -s stop 关闭 nginx
- sbin/nginx -s reload 重新加载nginx配置
12、window浏览器访问nginx代理服务器
http://ip地址:80
若出现欢迎界面则配置成功
二、nginx的核心功能
1、nginx的配置文件介绍
(1)进入nginx目录下的conf文件
(2)进入配置文件nginx.conf
vi nginx.conf
注意:
若修改了nginx的配置文件,必须重新加载配置文件
- 命令:./nginx -s reload
一个nginx可以对应多个server
2、反向代理
(1)正向代理
正向代理: 代理的客户端,对于服务器来说不知道真实的客户。
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求.
举例:
拿借钱打个比方,A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,在这个过程中B就扮演了一个正向代理的角色,这个过程中,真正借钱的人是谁,C是不知道的~
(2)反向代理
反向代理隐藏了真实的服务端,对于客户来说不知道访问的是哪台服务器。
举例:
还用借钱的例子,A想向C借钱,然后C借给他了,但是实际上这个钱可能C向B借的~至于钱到底是谁的,A是不知道的。
这里的C扮演着一个反向代理的角色,客户不知道真正提供服务的人是谁。
(3)实例
将准备的springboot项目jar包放入linux系统中
运行springboot项目
- java -jar qy165-demo01.jar
配置nginx来代理上面的springboot真实项目服务。
重新加载nginx配置文件
- …/sbin/nginx -s reload
浏览器访问nginx
2、负载均衡
负载均衡:多个请求访问代理服务器时,代理服务器将收到的多个请求,默认适用轮询策略进行平均的转发给真实服务器。也可通过配置来修改分配策略。
实例
准备两个真实服务器
nginx重新加载配置文件
- ./nginx - s reload
重新访问上方的springboot项目
负载均衡策略
负载均衡策略共三种:
- 轮询策略(默认):平均分配;
- 权重策略:真实服务器的配置不同,被访问的频率不同。
- ip_hash:根据客户端的ip分配相应真实服务器。
3、动静分离(了解)
把静态资源【css,js,img】交于nginx来处理,而动态资源[接口,jsp]还是有真实服务器处理
好处: 当修改静态资源时,无需对每个真实服务器的静态资源做修改,只需要修改nginx一处的静态资源。
4、nginx的高可用
高可用:提供一个虚拟ip连接两个nginx代理服务器,当主节点代理服务器宕机时,会自动连接到从节点代理服务器,从而保证项目的持续运行。
(1)高可用原理:
nginx的实现需要借助其他工具(keepalived)来实现 。在keepalived中配置一个 虚拟IP(VIP),同时keepalived会定时检查主服务器的工作状态(通用脚本实现)。在主服务器正常工作时,VIP就会映射到主服务器的IP,此时,虚拟IP对应的物理地址和主服务器IP对应的物理地址是相同的,所以访问虚拟IP即访问主服务器。当主服务器失效时,脚本就会监测到,从而根据预先的配置,找到优先级最高的备用服务器,并将虚拟IP映射到该备用服务器ip,此时,这两个ip对应的物理地址是相同的。在主服务器恢复正常时,又会被检测到,又会自动切换到主服务器。这样就实现了nginx的高可用。
(2)为什么适用nginx高可用:
因为nginx作为反向代理服务器时,有可能出现宕机的情况,而由于其方向代理的特性,就会导致其服务器(tomcat等)无法被访问,这样项目就停止工作了。但是使用了高可用后,就可以避免这种现象出现。
(3)实例
准备两台nginx服务器(必须安装了nginx)
修改两台nginx的主页面
vi /usr/soft/nginx/html/index.html
- 需要在每个nginx服务器上安装keepalived
yum install keepalived 安装keepalived rpm -q -a keepalived 检查是否安装了keepalived
默认安装路径为:/etc/keepalived
修改keepalived的配置文件内容
- 主节点代理服务器(端口号:192.168.223.128)
-
- 从节点代理服务器(端口号:192.168.223.133)
注意:第二十五行的数字修改为90;要比主节点小
- 放置nginx_check.sh文件到/usr/local/scr/
链接:https://pan.baidu.com/s/1KM6mAB1hbr5HMMwcJI4mBw
提取码:1234
启动服务
启动keepalived
- systemctl start keepalived.service
启动nginx服务
- nginx/sbin文件下
- ./nginx
注意:两台都要启动
访问虚拟IP
关闭主节点nginx进行测试
/usr/soft/nginx/sbin/nginx -s stop
systemctl stop keepalived.service