1.ip_hash
upstream backend{
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
如果需要摘除一个服务器的时候必须标记为 down,而不是直接删除配置,这样 ip_hash 的时候就不会把 backend1 上的请求 hash 到 backend2 上
2.server
upstream backend {
server backend1.example/com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
服务器的名称可以是一个域名,一个 ip 地址,端口号或 unix socket
参数: weight 权重;max_fails 请求失败次数,默认值1,设为 0 将关闭这项检查;fail_timeout 在经历参数 max_fails 设置的失败次数后,暂停的时间;down 标记服务器为永久离线状态,用于 ip_hash 指令;backup 仅仅在非 backup 服务器全部宕机或繁忙的时候才启用
3.upstream 指令
该指令用于设置一组可以在 proxy_pass 和 fastcgi_pass 指令中使用的代理服务器,默认的负载均衡方式为 轮询
upstream 变量:
$upstream_addr 处理请求 upstream 服务器地址
$upstream_status upstream 服务器的应答状态
$upstream_response_time upstream 服务器响应时间(毫秒),多个响应以逗号和冒号分割
$upstream_http_$HEADER 任意的 HTTP 协议头信息,例如: $upstream_http_host