服务器负载均衡Nginx:小白也能懂的Nginx负载均衡配置

如果你有多台后端服务器,想让流量均匀分担、提高稳定性,那 服务器负载均衡Nginx 是最常用的方案之一。

本文从零开始,带你一步步配置完成。


前置准备



  • 一台安装好 Linux(如 CentOS 7/8 或 Ubuntu 20.04+)的服务器,已安装 Nginx。

  • 至少两台后端业务服务器(可以是同一台机器上的不同端口,例如 8080 和 8081),确保它们能正常响应 HTTP 请求。

  • 确认 Nginx 已安装:nginx -v,如果未安装,执行:


  # CentOS
yum install nginx -y

Ubuntu/Debian

apt install nginx -y



  • 如果使用宝塔面板,登录后台,在“软件商店”确保 Nginx 已安装并运行。


分步操作


1. 准备后端服务


在本地测试时,可以用 Python 快速启动两个简单 HTTP 服务器:


# 终端1(端口 8080)
python3 -m http.server 8080 --directory /tmp/site1

终端2(端口 8081)

python3 -m http.server 8081 --directory /tmp/site2


如果不会 Python,直接用你的 Web 服务器(Apache、Tomcat等)监听不同端口也可以。

2. 编辑 Nginx 配置文件


Nginx 主配置文件通常在 /etc/nginx/nginx.conf,也可以新建一个独立文件放在 /etc/nginx/conf.d/ 目录下(推荐)。


新建一个配置文件,例如 load_balance.conf


sudo vi /etc/nginx/conf.d/load_balance.conf

粘贴以下内容:


upstream backend {

轮询(默认)方式,把请求分发给下面两台服务器

server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
}

server {
listen 80;
server_name example.com; # 替换为你的域名或IP

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;
}
}



  • upstream backend 定义了一个后端服务器组,这里用了默认轮询算法。

  • weight=1 表示权重相同,可以根据服务器性能调整。

  • proxy_pass 将请求转发到 backend 组。


3. 检查配置并重载 Nginx


# 检查配置文件语法
sudo nginx -t

如果显示 syntax is ok 和 test is successful,则重载

sudo systemctl reload nginx # 或 sudo nginx -s reload


如果使用宝塔面板,

可以在“网站” -> “设置” -> “反向代理”中填入 127.0.0.1:

8080
127.0.0.1:

8081
(但建议在配置文件中手动添加 upstream 更灵活)。


避坑指南



  1. 后端服务器必须可用:如果其中一台挂了,Nginx 默认还会转发请求,导致502错误。建议在上游配置中添加健康检查(max_fails=3 fail_timeout=30s)。示例:


   server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;


  1. 端口被防火墙拦截:确保后端端口(8080,8081)在防火墙规则中放行,firewall-cmd --zone=public --add-port=8080/tcp --permanent 然后 reload。

  2. 代理头设置错误:如果后端程序依赖客户端IP,必须配置 proxy_set_header X-Real-IP $remote_addr;,否则所有请求来源都是 Nginx 服务器IP。

  3. 配置文件格式:upstream 块必须放在 server 块外面,否则会报错。


效果验证


方法一:浏览器或 curl 测试


# 连续请求多次,观察响应内容是否来自不同后端
curl http://你的服务器IP/

如果两个后端返回的内容不同(例如不同页面的标题),你会交替看到它们。


方法二:查看 Nginx 日志


tail -f /var/log/nginx/access.log

可以看到不同后端的响应状态,正常应都是200。


方法三:关掉一台后端测试


停止其中一台后端服务(例如杀掉 8080 端口的进程),再次请求,Nginx 会自动将流量全部转发给存活的服务器,业务不中断。


高频问题解答



  • Q1:Nginx 负载均衡支持哪些算法?


A:主要有轮询(默认)、权重(weight)、IP哈希(ip_hash)、最少连接(least_conn)等。

在 upstream 块中添加 ip_hash; 可实现同一IP固定访问同一后端(适合需要Session保持的场景)。



  • Q2:配置后访问出现 502 Bad Gateway 怎么办?


A:

先检查后端服务是否正常运行,

其次查看 Nginx 错误日志 tail -f /var/log/nginx/error.log

通常是 connect() failed (111:

Connection refused)
表示后端未启动,

connect() failed (113:

No route to host)
表示网络不通。



  • Q3:用宝塔面板如何配置 upstream?


A:

宝塔默认的 Nginx 配置不支持直接在 UI 中写 upstream,

需要进入“文件” -> /www/server/panel/vhost/nginx/ 下找到对应域名的 conf 文件,

手动添加 upstream 块(与 server 块同级),

然后保存重启 Nginx。


如果你正在处理 服务器负载均衡Nginx,建议先按本文步骤完整执行,再根据自己的环境做微调;

遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
宝塔面板防CC攻击设置指南:零基础也能快速上手
下一篇
宝塔面板Redis缓存加速:零基础操作指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意