[转帖]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. 1 nginx/
  2. 3 |-- client_body_temp
  3. 4 |-- conf            #这是Nginx所有配置文件的目录,极其重要
  4. 5 | |-- fastcgi.conf            'fastcgi相关参数的配置文件'
  5. 6 | |-- fastcgi.conf.default         #fastcgi.conf的原始备份
  6. 7 | |-- fastcgi_params          #fastcgi的参数文件
  7. 8 | |-- fastcgi_params.default
  8. 9 | |-- koi-utf
  9. 10 | |-- koi-win
  10. 11 | |-- mime.types            '媒体类型'
  11. 12 | |-- mime.types.default
  12. 13 | |-- nginx.conf             '这是nginx默认的主配置文件'
  13. 14 | |-- nginx.conf.default #default结尾的都是备份文件
  14. 15 | |-- scgi_params            #scgi相关参数文件,一般用不到
  15. 16 | |-- scgi_params.default
  16. 17 | |-- uwsgi_params        #uwsgi相关参数文件,一般用不到
  17. 18 | |-- uwsgi_params.default
  18. 19 | `-- win-utf
  19. 20 |-- fastcgi_temp          #fastcgi临时数据目录
  20. 21 |-- html                    这是编译安装时'nginx的默认站点目录',类似Apache的默认站点/var/www/html目录
  21. 23 | |--50x.html #错误页面优雅替代显示文件,例如:出现502错误时会调用此页面
  22. 24 # error_page 500502503504 /50x.html;
  23. 25 | `-- index.html #默认的首页文件,首页文件名字是在nginx.conf中事先定义好的。
  24. 26 |-- logs 这是'nginx默认的日志路径',包括错误日志及访问日志
  25. 27 | |-- access.log 这是nginx的默认'访问日志文件',使用tail -f access.log,可以实时观看网站用户访问情况信息
  26. 28 | |-- error.log 这是nginx的'错误日志文件',如果nginx出现启动故障等问题,一定要看看这个错误日志
  27. 29 | `-- nginx.pid 'nginx的pid文件',Nginx进程启动后,会把所有进程的ID号写到此文件
  28. 30 |-- proxy_temp #临时目录
  29. 31 |-- sbin 这是'nginx命令的目录',如Nginx的启动命令nginx
  30. 32 | `-- nginx #Nginx的启动命令nginx
  31. 33 |-- scgi_temp #临时目录
  32. 34 `-- uwsgi_temp #临时目录

 二    Nginx的负载均衡核心配置文件

ngx_http_upstream_module --> 'nginx需要安装这个模块'才具备这个功能 --> 才能使用'upstream'指令

(1)默认 rr

'server节点下''location节点'中的proxy_pass配置为:'http:// + upstream'名称
  1. vim /usr/local/lnmp/nginx/conf/nginx.conf
  2. # 修改配置文件!
  3. default_type application/octet-stream;
  4. charset utf-8;
  5. # 反向代理(负载均衡)的模块-->默认的策略!
  6. upstream wzj {
  7. server 172.25.2.1:80; #RS1
  8. server 172.25.2.2:80; #RS2
  9. }
  10. server {
  11. listen 80;
  12. server_name lb.wzj.com; #域名访问(客户端配置解析)
  13. location / {
  14. proxy_pass http://wzj; #使用上面定义的负载均衡的模块(wzj)!
  15. }
  16. }
  17. synax'语法校验'
  18. nginx -t
  19. 重新'加载配置文件'-->nginx做了软链接
  20. nginx -s reload

测试1

  1. curl lb.wzj.com
  2. # server1 爱
  3. curl lb.wzj.com
  4. # server2 爱

测试2

  1. # 关闭其中一个RS,然后看访问的内容!
  2. # 结论:此时会访问RS开启的服务器!

(2)ip hash方式

  1. +++++++++++++++'负载均衡方式'+++++++++++++++
  2. upstream test {
  3. ip_hash;
  4. server 172.25.0.1;
  5. server 172.25.0.2;
  6. }
  7. 核心指令"ip_hash"只能在upstream {}中使用。这条指令用于通知nginx'使用ip hash负载均衡'算法
  8. 备注:如果没加这条指令,nginx会使用默认的'round robin负载均衡'模块

(3)nginx的后端轮询方式

Nginx的upstream支持'5种'分配方式,下面将会详细介绍,其中'前三种为Nginx原生支持'的分配方式,后两种为'第三方'支持的分配方式

(4)upstream模块的讲解

  1. +++++++++++'涉及健康检查'+++++++++++
  2. upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:
  3. 1)down 表示单前的server暂时'不参与负载'
  4. 2)weight 默认为1,weight越大,'负载的权重'就越大
  5. 3)max_fails :允许请求失败的次数默认为1.当'超过最大次数'时,返回proxy_next_upstream 模块'定义的错误'
  6. 4)fail_timeout : max_fails'次失败后',暂停的时间
  7. 5)backup: 其它所有的'非backup机器down或者忙'的时候,才请求backup机器,所以这台机器'压力会最轻',可以理解为'备用'服务器
  8. 思考问题: 后端挂了,请求是否会'转发到'上面

参考博客

(4)proxy相关的指令

  1. ​ngx_http_proxy_module'模块'
  2. server {
  3. listen 80;
  4. server_name localhost;
  5. location / {
  6. proxy_pass http://backend;
  7. proxy_connect_timeout 1;
  8. proxy_read_timeout 1;
  9. }
  10. }

 

(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多server及使用优化(php)

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

[转帖]Nginx优化与防盗链

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

[转帖]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 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限速

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