1、Nginx安装
1)使用远程工具链接linux操作系统
2)下载nginx相关依赖
yum -y install make pcre-devel zlib zlib-devel gcc-c++ libtool openssl openssl-devel
3)下载Nginx包
4)解压缩tar.gz包
tar -xvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure
make && make install
cd /usr/local/nginx/sbin/
./nginx
2、Nginx常用命令
1)使用nginx操作命令必须进入nginx的目录 /usr/local/nginx/sbin
2)查看nginx的版本号
./nginx -v
3)启动nginx
./nginx
4)关闭nginx
./nginx -s stop
5)重新加载nginx
./nginx -s reload
3、Nginx配置文件
1)配置文件的位置
/usr/local/nginx/conf/
2)配置文件的组成
Nginx的配置文件由三部分组成
- 第一部分 全局块
从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令
如 worker_processes 1;//该值越大,可以支持的并发处理量也越多 - 第二部分 events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接
如worker_connections 1024;//支持最大连接数 - 第三部分 http块
4、反向代理案例
案例一
1)要实现的功能
打开浏览器,在地址栏输入www.123.com,跳转到linux系统tomcat的主页面中
2)在linux系统启动tomcat
docker run -d -p 8888:8080 tomcat
3)hosts文件配置
192.168.188.172 www.123.com //添加到hosts文件中
4)配置Nginx配置文件
- 打开配置文件
cd /usr/local/nginx/conf
vim nginx.conf
5)启动nginx
cd /usr/local/nginx/sbin/
./nginx
6)浏览器访问
案例二
1)要实现的功能
根据访问的路径跳转到不同的端口;nginx监听端口为9001
访问192.168.188.172:9001/edu/ 跳转到127.0.0.1:8888
访问192.168.188.172:9001/vod/ 跳转到127.0.0.1:8889
2)配置tomcat服务器
准备两个tomcat,端口号分别为8888,8889
docker run -d -p 8888:8080 tomcat
docker run -d -p 8889:8080 tomcat
给这两个服务器的webapp下放页面
可以通过工具文件先从主机上传到虚拟机里,然后从虚拟机复制到容器里
docker cp 目标文件路径加全名称 容器id:要放置的位置
docker cp /usr/xiaowen/a.html 074d188b0dba:/usr/local/tomcat/webapps/edu/
docker cp /usr/xiaowen/b.html 20b041411f26:/usr/local/tomcat/webapps/vod/
3)配置Nginx配置文件
- 打开配置文件
cd /usr/local/nginx/conf
vim nginx.conf
在http块里新建一个server块,监听9001端口
~用于表示uri包含正则表达式,并且区分大小写。
~*用于表示uri包含正则表达式,并且不区分大小写。
如果uri包含正则表达式,则必须要有~或~*标识
如果路径中包含edu就到8888端口,如果路径中包含vod就到8889端口
4)启动nginx
cd /usr/local/nginx/sbin/
./nginx
5)浏览器访问
5、负载均衡案例
1)要实现的功能
在地址栏输入http://192.168.188.172/edu/a.html,负载均衡效果,平均8888和8889端口
2)准备tomcat服务器
准备两个tomcat,端口号分别为8888,8889
docker run -d -p 8888:8080 tomcat
docker run -d -p 8889:8080 tomcat
3)配置Nginx配置文件
- 在http块里新建upstream块,后边跟自定义的名字
- 在server块里修改server_name属性,可以通过ip访问
- server块的location添加proxy_pass http://上边起的upstream块名字
4)启动nginx
cd /usr/local/nginx/sbin/
./nginx
5)浏览器访问
6)nginx分配服务器策略
- 第一种 轮询(默认)
每个请求暗示时间顺序分配服务器,如果服务器down掉,能自动剔除
upstream myserver {
server 1 92.168. 188.172:8888;
server 192. 168.188.172: 8889;
}
- 第二种 weight
权重,默认为1,权重越高,被分配的客户端越多
upstream myserver {
server 1 92.168. 188.172:8888 weight=5;
server 192. 168.188.172: 8889;
}
- 第三种 ip_hash
每个请求按ip的hash结果分配,每个访客固定访问一个服务器,可以解决session问题
upstream myserver {
ip_hash;
server 1 92.168. 188.172:8888;
server 192. 168.188.172: 8889;
}
- 第四种 fair(第三方)
按后端服务器的响应时间分配请求,响应时间越短越优先分配
upstream myserver {
server 1 92.168. 188.172:8888;
server 192. 168.188.172: 8889;
fair
}
6、动静分离案例
1)要实现的功能
- 在地址栏输入192.168.188.172/images/图片名称,能访问/usr/xiaowen/images里的图片
- 在地址栏输入192.168.188.172/html/******.html,能访问/usr/xiaowen/html里的网页
2)准备文件
在虚拟机/usr/xiaowen目录下新建两个文件夹html和images,并把准备好的页面和图片分别放进文件夹内
3)配置nginx配置文件
4)启动nginx
cd /usr/local/nginx/sbin/
./nginx
5)浏览器访问
7、高可用
1)要实现的功能
访问虚拟ip192.168.188.170,通过keepalived跳转到192.168.188.172主服务器,停掉主服务器后访问虚拟ip,keepalived会自动跳转到192.168.188.173从服务器
2)准备工作
- 准备两台服务器192.168.188.172 和 192.168.188.173
- 在两台服务器上安装nginx
- 在两台服务器安装keepalived
3)安装keepalived
yum install keepalived -y
yum提示Another app is currently holding the yum lock; waiting for it to exit解决办法
#rm -f /var/run/yum.pid
安装完之后在/etc里面生成目录keepalived,在这个目录中有keepalived的配置文件
4)完成高可用配置
备机配置
主机配置
5)启动两台机器的keepalived和nginx
systemctl start keepalived.service
docker run -d -p 80:80 nginx
6)浏览器访问
访问虚拟IP
停掉主机后,访问仍然成功表示配置成功
7)脚本文件内容
#!/bin/bash
A=`ps -C nginx -no-header | wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived
fi
fi