[转帖]Nginx(四)负载均衡

nginx,负载,均衡 · 浏览次数 : 0

小编点评

**Nginx目录说明** Nginx目录包含了许多配置文件和目录,用于 Nginx 的安装、配置和运行。以下是 Nginx 所有配置文件的目录概述: **1. conf目录** * **nginx.conf:** Nginx 的主配置文件,定义了服务器的配置,如域名、端口、服务器块等。 * **nginx.conf.default:** Nginx 默认的配置文件,包含一些基本的配置。 * **fastcgi.conf、fastcgi.conf.default、scgi_params、scgi_params.default、uwsgi_params、uwsgi_params.default:** 用于 FastCGI 和 SCGI 的配置文件,配置 FastCGI 和 SCGI 模块。 * ** koi-utf10、koi-win11、mime.types、mime.types.default13、nginx.conf、nginx.conf.default:** 用于 KoI 的配置文件,配置 KoI 相关功能。 **2. modules目录** * **ngx_http_upstream_module:** 用于创建负载均衡模块的配置。 * **proxy_temp、sbin、uwsgi_temp:** 用于缓存和临时文件的目录。 **3. data目录** * **nginx.pid:** Nginx 的进程 ID 文件,用于记录进程启动后的 ID号。 **4. other目录** * **50x.html:** 错误页面替代页面,用于当网站出现 502 错误时调用。 * **default_type:** 定义默认数据类型的配置。 * **access.log、error.log:** 用于记录访问和错误日志。 **5. configuration 文件** * **nginx.conf:** Nginx 的主配置文件,定义了服务器的配置。 * **nginx.conf.default:** Nginx 默认的配置文件,包含一些基本的配置。

正文

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

其它参考

 

与[转帖]Nginx(四)负载均衡相似的内容:

[转帖]Nginx(四)负载均衡

一 nginx目录的说明 1 nginx/ 3 |-- client_body_temp 4 |-- conf #这是Nginx所有配置文件的目录,极其重要 5 | |-- fastcgi.conf 'fastcgi相关参数的配置文件' 6 | |-- fastcgi.conf.default #f

[转帖]Nginx中的Rewrite的重定向配置与实践

https://www.cnblogs.com/tugenhua0707/p/10798762.html 阅读目录 一:理解地址重写 与 地址转发的含义。 二:理解 Rewrite指令 使用 三:理解if指令 四:理解防盗链及nginx配置 简介:Rewrite是Nginx服务器提供的一个重要的功能

[转帖]nginx优化 突破十万并发

一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。 2. worker_cpu_affinity 00000001 00000010 0000

[转帖]@nginx多server及使用优化(php)

文章目录​ ​一、nginx多server优先级​​​ ​二、禁止IP访问页面​​​ ​三、nginx的包含include​​​ ​四、nginx 路径的alias和root​​​ ​1.配置​​​ ​2.总结​​​ ​五、nginx的try_files​​​ ​1.配置try_files​​​ ​

[转帖]Nginx Rewrite重写功能

目录 一、rewrite的概述1.1、概述1.2 跳转场景1.3 跳转实现1.4 Rewrite实际场景 二、常用的nginx正则表达式三、rewrite命令3.1 rewrite的语法格式3.2 fiag标记说明 四、location4.1 location大致分为三类4.2 location 常

[转帖]Nginx优化与防盗链

目录 一、配置Nginx隐藏版本号1、第一种方法修改配置文件2、第二种方法修改源码文件,重新编译安装 二、修改Nginx用户与组三、配置Nginx网页缓存时间四、实现Nginx的日志分割五、配置Nginx实现连接超时六、更改Nginx运行进程数七、配置Nginx实现网页压缩功能八、配置Nginx防盗

[转帖]nginx限速

https://www.cnblogs.com/fengzi7314/p/16541440.html 第一步,先创建限制的规则,我这里直接在nginx默认的配置文件目录下配置,如果想自定义,需要在主配置文件添加include xx/xxx/xxx/*.conf配置 [root@node5 nginx

[转帖]Nginx支持WebSocket反向代理

https://www.cnblogs.com/zhengchunyuan/p/12923692.html WebSocket是目前比较成熟的技术了,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类

[转帖]Nginx内置变量以及日志格式变量参数详解

补充 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$reques

[转帖]nginx proxy_pass keepalive

Syntax: keepalive connections; Default: — Context: upstream This directive appeared in version 1.1.4. Activates the cache for connections to upstream