ngx_http_upstream_module模块 | english русский 简体中文 עברית 日本語 türkçe 新闻 [en] nginx 介绍 下载 [en] 安全漏洞 [en] 文档 FAQ 外部连接 [en] 书籍 [en] 支持 [en] 捐献 [en] trac wiki nginx.com | |||||||||||||||||||||||||||||||
翻译内容可能已经过旧。 你可以通过 英文版本 查看最近的更新。
配置例子
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; } server { location / { proxy_pass http://backend; } }
指令
定义一组服务器。 这些服务器可以监听不同的端口。 而且,监听在TCP和UNIX域套接字的服务器可以混用。 例子: upstream backend { server backend1.example.com weight=5; server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; }
默认情况下,nginx按加权轮转的方式将请求分发到各服务器。
在上面的例子中,每7个请求会通过以下方式分发:
5个请求分到
定义服务器的地址 你可以定义下面的参数:
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; server backup1.example.com:8080 backup; }
指定服务器组的负载均衡方法,请求基于客户端的IP地址在服务器间进行分发。 IPv4地址的前三个字节或者IPv6的整个地址,会被用来作为一个散列key。 这种方法可以确保从同一个客户端过来的请求,会被传给同一台服务器。除了当服务器被认为不可用的时候,这些客户端的请求会被传给其他服务器,而且很有可能也是同一台服务器。 从1.3.2和1.2.2版本开始支持IPv6地址。
如果其中一个服务器想暂时移除,应该加上 例子: upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com down; server backend4.example.com; }
从1.3.1和1.2.2版本开始,
这个指令出现在版本 1.1.4. 激活对上游服务器的连接进行缓存。
需要注意的是,
配置memcached上游服务器连接keepalive的例子: 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指令应该设置为“ upstream http_backend { server 127.0.0.1:8080; keepalive 16; } server { ... location /http/ { proxy_pass http://http_backend; proxy_http_version 1.1; proxy_set_header Connection ""; ... } }
另外一种选择是,HTTP/1.0协议的持久连接也可以通过发送“Connection: Keep-Alive”头来实现。不过不建议这样用。
对于FastCGI的服务器,需要设置 fastcgi_keep_conn 指令来让连接keepalive工作: upstream fastcgi_backend { server 127.0.0.1:9000; keepalive 8; } server { ... location /fastcgi/ { fastcgi_pass fastcgi_backend; fastcgi_keep_conn on; ... } }
当使用的负载均衡方法不是默认的轮转法时,必须在
针对SCGI和uwsgi协议,还没有实现其keepalive连接的打算。
这个指令出现在版本 1.3.1 和 1.2.2. 指定服务器组的负载均衡方法,根据其权重值,将请求发送到活跃连接数最少的那台服务器。 如果这样的服务器有多台,那就采取有权重的轮转法进行尝试。 嵌入的变量
|