server指令

server指令用于设置组内的服务器,其语法结构为

server address [parameters];
  • address服务器的地址,可以是包含端口号的IP地址(IP:Port)、域名或者以“unix:”为前缀用于进程间通信的Unix Domain Socket

  • parameters,为当前服务器配置更多属性。这些属性变量包括以下内容:

    • weight=number,为组内服务器设置权重权重值高的服务器被优先用于处理请求。此时组内服务器的选择策略为加权轮询策略

    • max_fails=number,设置一个请求失败的次数。在一定时间范围内,当对组内某台服务器请求失败的次数超过该变量设置的值时,认为该服务器无效(down)。默认设置为1

    • fail_timeout=time,默认设置为10 s。有两个作用:

      • 一是设置 max_fails 指令尝试请求某台组内服务器的超时时间;

      • 另一个作用如果一台服务器被认为是无效(down)的,该变量设置的时间为认为服务器无效的持续时间。在这个时间内不再检查该服务器的状态,并一直认为它是无效(down)的。

    • backup,将某台组内服务器标记为备用服务器,只有当正常的服务器处于无效(down)状态或者繁忙(busy)状态时,该服务器才被用来处理客户端请求。

    • down,将某台组内服务器标记为永久的无效状态,该服务器暂不参与负载均衡

Example
upstream backend
{
  server backend1.example.com weight=5;
  server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
  server unix:/tmp/backend3;
}

在该示例中,我们设置了一个名为backend的服务器组,组内包含三台服务器,分别是

  • 基于域名的backend1.example.com

    • backend1.example.com的权重设置为5,为组内最大,优先接收和处理请求;

  • 基于IP地址的127.0.0.1:8080

    • 对本地服务器127.0.0.1:8080的状态检查设置是,如果在30 s内连续产生3次请求失败,则该服务器在之后的30s内被认为是无效(down)状态。

  • 用于进程间通信的Unix Domain Socket。

Last updated