Nginx负载均衡多服务器分发从配置到验证完整指南

什么时候需要Nginx做负载均衡?

当你网站访问量增加,单台服务器扛不住流量或偶尔宕机时,Nginx的负载均衡功能可以把用户请求分发给多台后端服务器,既分担压力又提升可用性。
简单说,一台服务器不够用,就用Nginx在前方当调度员,把请求均匀分给两台或多台机器。

准备工作:你需要什么?

  • 两台或更多后端服务器:运行相同应用(比如Web服务),IP地址不同。假设有两台:192.168.1.10 和 192.168.1.20,端口都是80。
  • 一台Nginx服务器:作为反向代理和负载均衡器。可以是单独的Linux机器,安装Nginx。
  • 基础权限:能通过SSH登录Nginx服务器,使用sudo命令。

如果后端服务器部署了不同应用,记得先让它们各自提供相同服务接口,否则负载均衡后用户可能看到不同内容。

核心配置:手把手编写nginx.conf

登录Nginx服务器,
编辑主配置文件(通常位于 /etc/nginx/nginx.conf),
或者更好做法:
/etc/nginx/conf.d/ 下新建一个配置文件,
例如 loadbalance.conf

第一步:定义上游服务器组

http 块内(如果没有,直接写在 http 块里),添加一个 upstream 块,给后端服务器起个名字(比如 backend_servers):

upstream backend_servers {
    server 192.168.1.10:80;
    server 192.168.1.20:80;
}

默认使用轮询策略(round-robin),即按顺序轮流分发请求。
如果想加权重,可以在地址后加 weight=2 等。

第二步:配置server块反向代理

server 块中,把请求转发给刚才定义的 upstream 组。
例如监听80端口,域名是 example.com

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_servers;
        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_pass 后面写 http:// + 上游组名称,不需要加端口(已在upstream里定义)。
三条 proxy_set_header 用来传递真实客户端IP信息,很有用。

保存文件后,测试配置是否正确:

sudo nginx -t

看到 syntax is oktest is successful 即可。

第三步:重载Nginx使配置生效

sudo systemctl reload nginx   # 或 sudo nginx -s reload

没有报错就完成了配置。
现在用户访问 example.com 时,Nginx会把请求分发给两台后端服务器。

常见坑点与解决办法

问题1:后端服务器响应502 Bad Gateway

  • 检查后端服务是否正常运行:在Nginx服务器上直接curl后端IP:端口,看能否返回内容。
  • 确认Nginx与后端网络互通,防火墙是否放行了对应端口。

问题2:用户登录状态丢失(session不一致)

  • 轮询策略下,同一用户的请求可能落在不同后端,导致session意外切换。解决办法:
  • 使用ip_hash策略,让同一IP的请求固定分发到同一台服务器(在upstream块加 ip_hash;)。
  • 或者集中存储session到Redis等共享缓存,后端共享session数据。

问题3:某台后端宕机后仍被转发请求

  • 默认情况下,Nginx不会自动踢掉故障节点。建议加上健康检查参数:
upstream backend_servers {
    server 192.168.1.10:80 max_fails=3 fail_timeout=30s;
    server 192.168.1.20:80 max_fails=3 fail_timeout=30s;
}

这样连续失败3次后,该服务器会被暂时标记为不可用,30秒后再尝试。

验证负载均衡是否生效

最简单的方法:在两台后端服务器上分别放置不同内容(比如根目录下 index.html 写上不同文字),然后反复访问 example.com,刷新几次看是否轮换显示不同页面。

也可以用命令行验证:

curl -I http://example.com

多次执行,观察响应的Server头或自定义返回内容是否交替。

更严谨的方式:
查看Nginx日志 /var/log/nginx/access.log
每一行记录中 $upstream_addr 字段会显示实际处理请求的后端IP,
确认是否均匀分发。

现在你已经掌握了Nginx负载均衡多服务器分发的完整操作流程。
实际部署中可根据需求调整策略(ip_hash、least_conn等),并考虑在后端加入健康检查和监控报警。
建议先从两节点起步,稳定后再扩展。
如果遇到本文未覆盖的问题,欢迎在评论区留言交流。

分享到:
上一篇
Nginx日志切割自动清理磁盘
下一篇
Nginx防盗链保护跨境产品图:跨境产品图被盗链?手把手教你
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意