nginx通过upstream定义后端服务器组并配合proxy_pass实现轮询负载均衡,需注意命名规范、网络连通性、请求头透传及https适配等细节。

用 Nginx 的 upstream 实现基础负载均衡,核心是定义一组后端服务器,并在 proxy_pass 中引用它。Nginx 默认采用轮询(round-robin)策略,无需额外配置即可自动分发请求。
一、定义 upstream 服务器组
在 http 块中添加一个命名的 upstream 块,列出所有后端服务地址:
- 每个
server行写一个后端 IP 和端口,例如server 192.168.1.10:8080; - 不加任何参数时,Nginx 按顺序轮流调度,每台服务器承担均等流量
- 建议使用完整地址(含端口),避免依赖默认端口导致转发失败
二、配置反向代理 location
在 server 块内设置 location,将请求代理到 upstream 名称:
-
proxy_pass http://your_upstream_name;—— 注意末尾斜杠是否保留,会影响路径拼接 - 必须透传关键请求头:
Host、X-Real-IP、X-Forwarded-For,否则后端无法获取真实客户端信息 - 可选但推荐加上超时设置:
proxy_connect_timeout、proxy_read_timeout等,防止长阻塞
三、验证与启用配置
完成编辑后,不能直接重启,要走标准检查流程:
- 运行
nginx -t检查语法和配置有效性,避免 reload 失败导致服务中断 - 确认无误后执行
systemctl reload nginx或nginx -s reload生效新配置 - 可通过访问代理地址并查看后端日志,确认请求是否被不同节点交替接收
四、常见注意事项
基础配置看似简单,但几个细节容易出错:
- upstream 名称不能含下划线(
_),只支持字母、数字、短横线,否则proxy_pass会报错 - 后端服务必须能被 Nginx 所在机器直连访问(网络通、端口开放、防火墙放行)
- 如果后端是 HTTPS 服务,
proxy_pass要写成https://...,并考虑证书信任问题 - MinIO 等有状态服务(如 Console)不建议直接轮询,应改用
ip_hash或单点代理











