一 nginx目录的说明
1 nginx/
3 |-- client_body_temp
4 |-- conf #这是Nginx所有配置文件的目录,极其重要
5 | |-- fastcgi.conf 'fastcgi相关参数的配置文件'
6 | |-- fastcgi.conf.default #fastcgi.conf的原始备份
7 | |-- fastcgi_params #fastcgi的参数文件
8 | |-- fastcgi_params.default
9 | |-- koi-utf
10 | |-- koi-win
11 | |-- mime.types '媒体类型'
12 | |-- mime.types.default
13 | |-- nginx.conf '这是nginx默认的主配置文件'
14 | |-- nginx.conf.default #default结尾的都是备份文件
15 | |-- scgi_params #scgi相关参数文件,一般用不到
16 | |-- scgi_params.default
17 | |-- uwsgi_params #uwsgi相关参数文件,一般用不到
18 | |-- uwsgi_params.default
19 | `-- win-utf
20 |-- fastcgi_temp #fastcgi临时数据目录
21 |-- html 这是编译安装时'nginx的默认站点目录',类似Apache的默认站点/var/www/html目录
23 | |--50x.html #错误页面优雅替代显示文件,例如:出现502错误时会调用此页面
24 # error_page 500502503504 /50x.html;
25 | `-- index.html #默认的首页文件,首页文件名字是在nginx.conf中事先定义好的。
26 |-- logs 这是'nginx默认的日志路径',包括错误日志及访问日志
27 | |-- access.log 这是nginx的默认'访问日志文件',使用tail -f access.log,可以实时观看网站用户访问情况信息
28 | |-- error.log 这是nginx的'错误日志文件',如果nginx出现启动故障等问题,一定要看看这个错误日志
29 | `-- nginx.pid 'nginx的pid文件',Nginx进程启动后,会把所有进程的ID号写到此文件
30 |-- proxy_temp #临时目录
31 |-- sbin 这是'nginx命令的目录',如Nginx的启动命令nginx
32 | `-- nginx #Nginx的启动命令nginx
33 |-- scgi_temp #临时目录
34 `-- uwsgi_temp #临时目录
二 Nginx的负载均衡核心配置文件
ngx_http_upstream_module --> 'nginx需要安装这个模块'才具备这个功能 --> 才能使用'upstream'指令
(1)默认 rr
将'server节点下'的'location节点'中的proxy_pass配置为:'http:// + upstream'名称
vim /usr/local/lnmp/nginx/conf/nginx.conf
# 修改配置文件!
default_type application/octet-stream;
charset utf-8;
# 反向代理(负载均衡)的模块-->默认的策略!
upstream wzj {
server 172.25.2.1:80; #RS1
server 172.25.2.2:80; #RS2
}
server {
listen 80;
server_name lb.wzj.com; #域名访问(客户端配置解析)
location / {
proxy_pass http://wzj; #使用上面定义的负载均衡的模块(wzj)!
}
}
synax'语法校验'
nginx -t
重新'加载配置文件'-->nginx做了软链接
nginx -s reload
测试1
curl lb.wzj.com
# server1 爱
curl lb.wzj.com
# server2 爱
测试2
# 关闭其中一个RS,然后看访问的内容!
# 结论:此时会访问RS开启的服务器!
(2)ip hash方式
+++++++++++++++'负载均衡方式'+++++++++++++++
upstream test {
ip_hash;
server 172.25.0.1;
server 172.25.0.2;
}
核心指令"ip_hash"只能在upstream {}中使用。这条指令用于通知nginx'使用ip hash负载均衡'算法
备注:如果没加这条指令,nginx会使用默认的'round robin负载均衡'模块
(3)nginx的后端轮询方式
Nginx的upstream支持'5种'分配方式,下面将会详细介绍,其中'前三种为Nginx原生支持'的分配方式,后两种为'第三方'支持的分配方式
(4)upstream模块的讲解
+++++++++++'涉及健康检查'+++++++++++
upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:
1)down 表示单前的server暂时'不参与负载'
2)weight 默认为1,weight越大,'负载的权重'就越大
3)max_fails :允许请求失败的次数默认为1.当'超过最大次数'时,返回proxy_next_upstream 模块'定义的错误'
4)fail_timeout : max_fails'次失败后',暂停的时间
5)backup: 其它所有的'非backup机器down或者忙'的时候,才请求backup机器,所以这台机器'压力会最轻',可以理解为'备用'服务器
思考问题: 后端挂了,请求是否会'转发到'上面
(4)proxy相关的指令
ngx_http_proxy_module'模块'
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend;
proxy_connect_timeout 1;
proxy_read_timeout 1;
}
}
(5)原生nginx健康检查问题
备注: 后端节点异常'和'被nginx置为'判断'为异常节点是'两码事'
(6)第三方健康检查的模块