一、软件安装
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
cd /usr/local
mkdir nginx
cd nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
cd /usr/local/nginx
cd nginx-1.13.7
./configure
make && make install
二、配置案例
案例一:反向代理
反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址
实现效果:使用 nginx 反向代理,访问 www.haha.com 直接跳转到 127.0.0.1:8080
提前配置好两个tomcat
1.在windows的hosts文件中,设置域名和ip对应关系
2.设置代理
# vim /usr/local/nginx/conf/nginx.conf
运行nginx
# cd /usr/local/nginx/sbin/
# ./nginx
3.测试
浏览器输入域名查看结果为tomcat页面
案例二:基于不同的端口号
实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 9001
访问 http://127.0.0.1:9001/web1 直接跳转到 127.0.0.1:8080
访问 http://127.0.0.1:9001/web2 直接跳转到 127.0.0.1:8082
1.准备两个 tomcat,一个 8080端口,一个 8082端口,并准备好测试的页面
# cd /usr/local/
# mkdir tomcat8080
# mkdir tomcat8082 // 然后拖入tomcat进行解压安装
# cd /usr/local/tomcat8080/apache-tomcat-7.0.70/conf/
# vim server.xml // 修改tomcat的端口号
启动tomcat
# cd ../bin/
# ./startup.sh
启动后浏览器输入 http://192.168.60.131:8080/ http://192.168.60.131:8082 测试成功访问
创建测试目录及页面
# cd ../webapps/
# mkdir web1
# echo "web1's port is 8080" > web1/web1.html
2.修改 nginx 的配置文件 在 http 块中添加 server{}
# vim /usr/local/nginx/conf/nginx.conf
3.关闭重启nginx,测试
案例三:负载均衡
实现效果 :浏览器地址栏输入地址 http://192.168.60.131/web/web.html,负载均衡效果,平均 8080 和 8081 端口中
1.准备两台 tomcat 服务器,一台 8080,一台 8081,在两台 tomcat 里面 webapps/web 目录中放入测试页面
# echo "web is 8080" > webapps/web/web.html
2.在 nginx 的配置文件中进行负载均衡的配置
# cd /usr/local/nginx/conf/
# vim nginx.conf
在http块中添加负载均衡
在server中添加代理
3.关闭重启nginx,测试是否负载均衡
案例四:动静分离
把动态页面和静态页面由不同的服务器来解析
1.准备工作
静态页面
# mkdir /data/{www,image} -p
# echo "www test" > /data/www/index.html // 写测试页面传入图片
2.修改配置
# vim /usr/local/nginx/conf/nginx.conf
3.启动nginx,测试
浏览器查看静态资源 http://192.168.60.131/image/ ,也可以后面加上照片名称直达目的
http://192.168.60.131/www/index.html
案例五:高可用
准备:需要两台服务器均安装 nginx,keepalived
二、完成高可用配置(主从配置)
1.修改/etc/keepalived/keepalivec.conf 配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.60.131
smtp_connect_timeout 30
router_id LVS_DEVEL // 可能需要在hosts文件中写映射关系
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface eno16777736 //网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication { // 校验权限
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.60.100 // VRRP H 虚拟地址
}
}
2.在/usr/local/src 添加检测脚本
#!/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
3.把两台服务器上 nginx 和 keepalived 启动
启动 nginx:./nginx
启动 keepalived:systemctl start keepalived.service
4.测试
http://192.168.60.100/ 访问虚拟地址,停掉主的服务,查看是否会切换至备份,在未切换备份服务器前查看备份服务器的ip是没有虚拟ip的,当主服务器down掉后,就会出现虚拟ip,主服务器恢复后,虚拟ip又会消失