语法:upstream name { ... }
默认值:—
上下文:http
定义一群服务器。服务器可以监听到不同的端口。此外,监听 TCP 和 UNIX-domian socket 的服务器可以混合定义。
例如:
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
默认情况下,请求是使用一个加权重的循环负载方法分配给各个主机的。在上面的例子中,每七个请求会以以下方案进行分配:五个请求分给 backend1.example.com 而另外两个请求分别分配给第二和第三个主机。如果在连接一台主机时发生错误,当前请求会被传给下一台主机,如此这般知道所有运行中的服务器都被尝试。如果没有任何主机成功返回,客户端会受到从最后一台主机返回的通信结果。
语法:server address [parameters];
默认值:—
上下文:upstream
定义一台主机的地址以及其他一些参数。地址可以被指定为一个域名或一个 IP 地址,端口号参数可选,或者被指定为 "unix:" 前缀之后的一个 UNIX-domain socket 路径。端口号没指定的话就使用端口号 80。解析到多个 IP 地址的域名会一次性定义多台主机。
可以定义以下参数:
weight=number
设置服务器的权重,默认为 1。
max_fails=number
设置由 fail_timeout 定义的时间段内连接该主机的失败次数,以此来断定 fail_timeout 定义的时间段内该主机是否可用。默认情况下这个数值设置为 1。零值的话禁用这个数量的尝试。由proxy_next_upstream、fastcgi_next_upstream、以及memcached_next_upstream 等指令来判定错误尝试。
fail_timeout=time
设置
在指定时间内连接到主机的失败次数,超过该次数该主机被认为不可用。
服务器被视为无效的时段。
这个参数默认是 10 秒钟。
slow_start=time
设置一台不健康的主机变成健康主机,或者当一台主机在被认为不可用变成可用时,将其权重由零恢复到标称值的时间。默认值为零,也就是说,禁用慢启动。
这个功能仅作为我们的商业订阅的一部分。
backup
将当前服务器标记为备份服务器。当主服务器不可用时,向备用服务器传递请求。
down
标记当前服务器为永不可用;和 ip_hash 指令一起使用。
举例:
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
}