nginx的反向代理

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;
        ...
    }
}

你可能感兴趣的:(web服务,负载均衡)