Nginx作为高性能的HTTP服务器和反向代理服务器,提供了多种负载均衡策略来优化网站性能。以下是常见的Nginx负载均衡策略及其配置方法。
首先需要在Nginx配置文件中定义upstream模块:
http {
upstream backend {
# 这里添加服务器列表和负载均衡策略
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
}
默认策略,请求按时间顺序逐一分配到不同的后端服务器。
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
根据服务器处理能力分配不同的权重。
upstream backend {
server backend1.example.com weight=5; # 50%的请求
server backend2.example.com weight=3; # 30%的请求
server backend3.example.com weight=2; # 20%的请求
}
同一客户端的请求总是分配到同一台服务器,适合需要会话保持的应用。
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-upstream-fair
。
upstream backend {
fair;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
需要安装第三方模块ngx_http_upstream_consistent_hash
。
upstream backend {
consistent_hash $request_uri;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
Nginx Plus提供主动健康检查,开源版可通过第三方模块或被动检查实现。
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
server backend3.example.com max_fails=3 fail_timeout=30s;
}
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backup.example.com backup;
}
upstream backend {
server backend1.example.com down;
server backend2.example.com;
}
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 32;
}
通过合理选择和配置Nginx负载均衡策略,可以显著提高网站的可用性、性能和可扩展性。