nginx 负载均衡

使用 upstream 模块将流量分发到多个后端服务器

语法

upstream name { server addr; } → proxy_pass http://name;

参数

参数说明示例级别
server 后端服务器地址 server 127.0.0.1:3001; 常用
weight 权重(默认 1) server 127.0.0.1:3001 weight=3; 常用
max_fails 最大失败次数 server 127.0.0.1:3001 max_fails=3; 常用
backup 备用服务器 server 127.0.0.1:3003 backup; 进阶
ip_hash 按 IP 哈希(会话保持) ip_hash; 进阶
least_conn 最少连接数策略 least_conn; 进阶

示例

轮询负载均衡

upstream app {
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
    server 127.0.0.1:3003;
}
server {
    location / {
        proxy_pass http://app;
    }
}
默认轮询,请求均匀分配

加权负载均衡

upstream app {
    server 192.168.1.10:8080 weight=5;
    server 192.168.1.11:8080 weight=3;
    server 192.168.1.12:8080 weight=2;
}
性能好的服务器分配更多请求

健康检查 + 备用

upstream app {
    server 127.0.0.1:3001 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:3002 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:3003 backup;
}
主服务器都挂了才用 backup

常见错误

upstream 中所有服务器都不可用 检查后端服务是否运行,确认端口和地址正确

技巧

相关命令