Nginx是一个高性能的HTTP和反向代理服务器,也是优秀的负载均衡器。以下是Nginx负载均衡的详细配置方法。
在Nginx配置文件中(通常是nginx.conf
或sites-available/
目录下的站点配置文件),使用upstream
指令定义后端服务器组:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
# 其他配置...
}
在server块中配置代理传递到上游服务器组:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx支持多种负载均衡算法:
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
}
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
}
max_fails
: 允许失败次数fail_timeout
: 失败后暂停时间upstream backend {
server backend1.example.com;
server backend2.example.com;
server backup.example.com backup;
}
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 32; # 保持的连接数
}
http {
upstream backend {
least_conn;
server backend1.example.com weight=3 max_fails=2 fail_timeout=30s;
server backend2.example.com weight=2 max_fails=2 fail_timeout=30s;
server backup.example.com backup;
keepalive 32;
}
server {
listen 80;
server_name example.com;
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_read_timeout 10s;
proxy_send_timeout 10s;
}
}
}
检查配置语法是否正确:
nginx -t
重载Nginx配置:
nginx -s reload
通过以上配置,Nginx可以有效地将请求分发到多个后端服务器,提高系统的可用性和性能。