一 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-utf10 | |-- koi-win11 | |-- mime.types '媒体类型'12 | |-- mime.types.default13 | |-- nginx.conf '这是nginx默认的主配置文件'14 | |-- nginx.conf.default #default结尾的都是备份文件15 | |-- scgi_params #scgi相关参数文件,一般用不到16 | |-- scgi_params.default17 | |-- uwsgi_params #uwsgi相关参数文件,一般用不到18 | |-- uwsgi_params.default19 | `-- win-utf20 |-- 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的启动命令nginx32 | `-- nginx #Nginx的启动命令nginx33 |-- 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)第三方健康检查的模块