一 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)第三方健康检查的模块