默认算法,按顺序将请求分配到后端服务器。
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
根据服务器性能分配不同权重。
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com weight=3;
server backend3.example.com weight=2;
}
基于客户端IP地址进行哈希计算,确保同一客户端始终访问同一服务器。
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
将请求发送到当前连接数最少的服务器。
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
将请求发送到平均响应时间最短的服务器(仅Nginx Plus支持)。
upstream backend {
least_time header;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
}
upstream backend {
hash $cookie_jsessionid consistent;
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
server backend1.example.com slow_start=30s;
server backend2.example.com slow_start=30s;
}
upstream backend {
zone backend 64k;
server backend1.example.com max_conns=100;
server backend2.example.com max_conns=100;
}
http {
upstream backend {
least_conn;
server backend1.example.com:8080 weight=5 max_fails=3 fail_timeout=30s;
server backend2.example.com:8080 weight=3 max_fails=3 fail_timeout=30s;
server backup1.example.com:8080 backup;
keepalive 32;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 超时设置
proxy_connect_timeout 5s;
proxy_send_timeout 10s;
proxy_read_timeout 30s;
}
}
}
通过合理选择和配置负载均衡算法,可以显著提高网站服务的可用性、性能和可扩展性。