- nginx配置文件:(使用yum安装,所以位置在/etc/nginx/nginx.conf )
包含三部分内容
(1)全局块:配置服务器整体运行的配置指令
比如 worker_processes 1;处理并发数的配置
(2)events 块:影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024
(3)http 块
还包含两部分:http 全局块、server 块
- nginx 分配服务器策略
轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
weight weight 代表权重默认为 1,权重越高被分配的客户端越多
ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器;也即是第一次使用该请求访问到8080端口的服务器,以后每次使用该请求都会访问到8080服务器
fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配;也即是哪个tomcat启动快就先访问哪个
- 动静分离:nginx将动态请求转发到tomcat服务器,将静态请求转发到对应的静态资源
动静分离的实现:方式一将静态文件放在单独的域名;方式二将动态和静态文件混合一起发布
通过 location 指定不同的后缀名实现不同的请求转发;通过 expires 参数设置,可以使浏 览器缓存过期时间,减少与服务器之前的请求和流量
访问静态资源实现:
在Linux根目录下新建文件夹和html:/data/www/a.html
在Linux根目录下新建文件夹和图片:/data/image/01.jpg
修改nginx配置文件:开放的路径、转发方式
启动nginx测试:window浏览器输入:192.168.17.129/image/01.jpg 将会访问到图片
输入:192.168.17.129/image/ 会显示图片的目录
输入:192.168.17.129/www/a.html 会显示html页面
- nginx高可用
我们发送的请求通过nginx转发到不同的tomcat服务器,如果nginx服务器突然故障,我们切换到另一台linux的nginx服务器,需搭建nginx集群
同时需在Linux服务器上安装leepalived进行监听nginx是否正常运行,两台nginx服务器对外暴露一个虚拟ip
- 具体步骤
# 需两台Linux服务器,都安装了nginx和keepalived
# 安装keepalived:
yum install keepalived -y
/etc/keepalived/keepalived.conf # 配置文件
systemctl start keepalived.service # 启动
ps -ef | grep keepalived # 查看进程
# 第一台Linux中的nginx作为主服务器,修改第一台Linux中的keepalived.conf
global_defs { # 全局定义
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL # 当前Linux主机的名称,vi /etc/hosts添加一行127.0.0.1 LVS_DEVEL
}
vrrp_script chk_http_port { # 检测脚本
script "/usr/local/src/nginx_check.sh" # 脚本的路径
interval 2 # 检测脚本执行的间隔
weight 2 # 权重
}
vrrp_instance VI_1 { # 虚拟IP的配置
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 # 当前IP使用的网卡名称
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 # 两台nginx绑定的虚拟ip
}
}
# 在/usr/local/src 添加检测脚本nginx_check.sh,用于检测nginx是否正常,如下:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx # nginx启动路径
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
# 在另一台Linux中的nginx作为备用服务器,在这台Linux中的keepalived.conf中做同样的配置,虚拟IP位置稍作修改;nginx_check.sh一样
# 测试:启动两台服务器的nginx和keepalived,浏览器中输入虚拟ip访问到的主服务nginx,命令ip a可查看到虚拟ip绑定的是主服务器中的ip,停用主服务器的nginx和keepalived,
# 浏览器中输入虚拟ip访问的备用服务器的nginx,命令ip a可查看到虚拟ip绑定的是备用服务器中的ip