Nginx中的upstream配置使用

By timebusker on June 2, 2017
配置例子

定义一组服务器。 这些服务器可以监听不同的端口。 而且,监听在TCP和UNIX域套接字的服务器可以混用。

upstream backend {
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server unix:/tmp/backend3;
    server backup1.example.com:8080   backup;
    server backup2.example.com:8080   backup;
	keepalive 80;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

定义服务器的地址address和其他参数parameters。 地址可以是域名或者IP地址,端口是可选的,或者是指定“unix:”前缀的UNIX域套接字的路径。 如果没有指定端口,就使用80端口。 如果一个域名解析到多个IP,本质上是定义了多个server。

  • weight=number设定服务器的权重,默认是1

  • max_fails=number设定Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试。 失败的尝试次数默认是1。设为0就会停止统计尝试次数,认为服务器是一直可用的。 你可以通过指令proxy_next_upstreamfastcgi_next_upstreammemcached_next_upstream来配置什么是失败的尝试。 默认配置时,http_404状态不被认为是失败的尝试。

  • fail_timeout=time设定,服务器被认为不可用的时间段,默认情况下,该超时时间是10秒。统计失败尝试次数的时间段。在这段时间中,服务器失败次数达到指定的尝试次数,服务器就被认为不可用。

  • backup标记为备用服务器。当主服务器不可用以后,请求会被传给这些服务器。

  • down标记服务器永久不可用,可以跟ip_hash指令一起使用。

  • keepalive参数设置每个worker进程与后端服务器保持连接的最大数量。这些保持的连接会被放入缓存。 如果连接数大于这个值时,最久未使用的连接会被关闭。需要注意的是,keepalive指令不会限制Nginx进程与上游服务器的连接总数。 新的连接总会按需被创建。keepalive参数应该稍微设低一点,以便上游服务器也能处理额外新进来的连接。