首页 > 生活百科 >

问 nginx 负载均衡完整配置教程

2026-11-09 21:03:16
最佳答案

答

【深度正文(首段结论 + 分层清单)】

首段结论:nginx 负载均衡核心是使用 upstream 块定义后端服务器集群,然后在 location 里面通过 proxy_pass 反向代理指向这个 upstream 名称,nginx 内置多种调度算法,默认是轮询,还支持加权轮询、ip_hash、最少连接,同时可以配置健康检查、超时、失败重试,实现把客户端请求分发到多台后端业务服务器,提升并发能力和高可用,配置完成之后必须执行 nginx -t 校验语法,再 reload 重载配置,不需要重启服务。

分层清单

一 基础最简配置示例

http {

定义后端服务器集群

upstream backend {

server 192.168.1.10:8080;

server 192.168.1.11:8080;

}

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;

}

}

}

说明:不写算法默认轮询,请求依次分配给两台后端服务器

二 四种常用调度算法配置

1 加权轮询,给性能强的服务器分配更高权重,weight 数值越大分到请求越多

upstream backend {

server 192.168.1.10:8080 weight=3;

server 192.168.1.11:8080 weight=1;

}

2 ip_hash,根据客户端 ip 做哈希,同一个 ip 固定访问同一台后端,解决会话保持

upstream backend {

ip_hash;

server 192.168.1.10:8080;

server 192.168.1.11:8080;

}

3 least_conn,最少连接,优先把请求发给当前连接数最少的后端服务器

upstream backend {

least_conn;

server 192.168.1.10:8080;

server 192.168.1.11:8080;

}

4 第三方fair算法,按后端响应时间分配请求,原生nginx不带,需要编译第三方模块,生产不推荐优先使用

三 后端服务器常用参数

1 max_fails,允许失败次数,默认1

2 fail_timeout,失败之后暂停转发的时间,默认10秒

3 backup,备用机,只有全部主后端宕机才启用

4 down,标记服务器永久下线,不再转发请求

示例:

nginx

upstream backend {

server 192.168.1.10:8080 max_fails=2 fail_timeout=30s;

server 192.168.1.11:8080 max_fails=2 fail_timeout=30s;

server 192.168.1.12:8080 backup;

}

四 代理必备参数与超时配置

proxy_connect_timeout 5s;

proxy_send_timeout 10s;

proxy_read_timeout 10s;

proxy_next_upstream error timeout http_502 http_503;

proxy_next_upstream 作用,当某台后端报错,自动尝试转发到下一台后端服务器

五 配置生效操作步骤

第一步 修改 nginx.conf 或者 conf.d 下面独立配置文件

第二步 执行 nginx -t 检查配置语法是否正确

第三步 语法通过之后执行 nginx -s reload 重载配置

第四步 多次访问测试,确认请求是否按照算法分发到不同后端

六 常见注意点

1 原生 nginx 的健康检查是被动健康检查,主动健康检查需要 nginx-plus 商业版或者第三方模块

2 ip_hash 如果某台后端宕机,会影响这部分固定 ip 用户,故障恢复之后重新分配

3 后端服务器尽量保持业务版本一致,避免请求落到不同节点出现数据不一致

4 跨域、websocket 场景,需要额外增加对应的 proxy 头配置,不然负载均衡之后连接异常

【相关 FAQ】

问题 1 nginx 负载均衡默认是什么算法

回答 1 nginx 负载均衡默认调度算法是轮询,按顺序依次把请求分发到 upstream 里面的后端服务器,不需要额外写算法指令。

问题 2 nginx 负载均衡怎么实现会话保持

回答 1 nginx 负载均衡实现会话保持最常用方式就是在 upstream 里面添加 ip_hash 指令,同一个客户端 ip 固定访问同一台后端,也可以后端业务自己做共享 session。

问题 3 nginx 配置负载均衡之后 reload 报错怎么办

回答 1 先执行 nginx -t 查看报错行号,常见错误是 upstream 名称写错,proxy_pass 后面末尾多写斜杠,或者 server 语法缺少分号,修正之后再次 reload。

问题 4 nginx 负载均衡 backup 备用服务器什么时候启用

回答 1 backup 备用服务器,只有 upstream 里面所有正常主服务器全部故障不可用的时候,nginx 才会把请求转发到 backup 这台后端服务器。

【免责申明】

本教程基于开源版 nginx 基础配置讲解,不同 nginx 版本参数细节存在差异,生产环境上线前请充分压测验证,第三方模块方案需要评估兼容性与维护风险。