ngx_http_upstream_module模块用于定义可以由代理传递、fastcgi传递、uwsgi传递、scgi传递和memcached传递(proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass)指令引用的服务器组。
例如:
http {
....
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;
}
}
一、对后端服务器进行定期的健康检查
http{
resolver 10.0.0.1;
upstream dynamic {
zone upstream_dynamic 64k;
server backend1.example.com weight=5;
server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
server 192.0.2.1 max_fails=3;
server backend3.example.com resolve;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
}
server {
location / {
proxy_pass http://dynamic;
health_check;
}
}
参数说明:
参数 | 说明 |
---|---|
resolve | 监视与服务器域名对应的IP地址的变化,并自动修改上游配置,而不需要重新启动nginx。服务器组必须驻留在共享内存中。 |
weight=number | 定义权重 |
max_conns=number | 限制后端节点的最大连接数;默认值为0,即没有做限制 |
max_fails=number | 设置未成功尝试与服务器通信的次数。默认情况下,不成功尝试的次数为1,0为禁用。 |
fail_timeout | 设置未成功尝试与服务器通信的超时时间,默认是10s |
backup | 将服务器标记为备份服务器。当主服务器不可用时,它将被传递请求。 |
down | 此服务器为永久不可用 |
二、会话保持设置
1、ip_hash
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
2、配置memcached保持连接
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;
}
}
3、对于HTTP,代理HTTP版本指令应该设置为1.1,并且应该清除连接头字段
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 "";
...
}
}
4、对于FastCGI服务器,需要设置FastCGI保存连接
upstream fastcgi_backend {
server 127.0.0.1:9000;
keepalive 8;
}
server {
...
location /fastcgi/ {
fastcgi_pass fastcgi_backend;
fastcgi_keep_conn on;
...
}
}