如果群里面只有一台主机,那么 max_fails、 fail_timeout 和 slow_start 参数将被忽略,而且这样的主机也永远不会被认为不可用。
语法:zone name size;
默认值:—
上下文:upstream
使群动态可配。定义持有群的配置和工作进程之间共享的运行时状态的共享内存区域的名字和大小。这样的群允许在运行时添加、删除和修改服务器。这个配置通过 upstream_conf 进行访问。
这一指令仅作为我们商业订购的一部分。
语法:ip_hash;
默认值:—
上下文:upstream
指定一个使用负载均衡方法根据客户端 IP 地址将请求分发给一些服务器的群。客户 IPv4 地址或者 IPv6 地址的前三个位群作为一个散列键。这个方法可以使同一个客户端的常常被发送给同一台主机,除非这台主机是不可用状态。在这种情况下(该主机不可用)客户端请求会被传递到另一台主机。大多数情况下,它将被发送给同一台主机。
Nginx 1.3.2 和 1.2.2 之后开始支持 IPv6 地址。
如果服务器中的一台需要临时移除掉,那么它应该使用 down 参数标记以保持客户 IP 地址的当前散列。
例如:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
在 Nginx 1.3.1 和 1.2.2 版本之前的版本是无法使用 ip_hash 负载均衡方式定义服务器权重的。
语法:keepalive connections;
默认:—
上下文:upstream
这一指令在 Nginx 版本 1.1.4 之后出现。
激活 upstream 服务器的连接缓存。
connections 参数设置保存在每个工作进程缓存中的 upstream 主机的闲置 keepalive 连接的最大个数。超出这个数目时,最近很少使用的连接被关闭。
应该特别指出的是 keepalive 指令并没有限制一个 Nginx 工作进程所能承载的连接总量。connections 应该设置为一个足够小的值以使 upstream 服务器也足以应对新的连接。
带有 keepalive 连接的 memcached upstream 配置例子:
upstream memcached_backend {
server 127.0.0.1:11211;
server 10.0.0.2:11211;
keepalive 32;
}
server {
...
location /memcached/ {
set $memcached_key $uri;
memcached_pass memcached_backend;
}
}
对于 HTTP,proxy_http_version 指令应该设置为 "1.1",并且清空 "Connection" 头字段:
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass ;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}