需通过手动编辑Nginx配置文件,利用upstream模块实现负载均衡:一、在站点配置顶部定义upstream服务器组;二、修改server块为proxy_pass转发;三、可选启用健康检查;四、HTTPS需透传X-Forwarded-Proto头;五、通过日志和响应头验证分发效果。

如果您在宝塔面板中部署了多个相同业务的网站实例,希望将用户请求分发到不同服务器以提升可用性与响应能力,则需借助Nginx反向代理功能模拟负载均衡行为。宝塔面板本身不提供原生集群管理界面,但可通过手动编辑Nginx配置文件,调用Nginx内置的upstream模块实现多站点级的请求分发。以下是具体实施步骤:
一、配置上游服务器组(upstream)
upstream模块用于定义后端服务器列表,是Nginx实现负载均衡的核心基础。需在全局配置或站点配置前声明,确保其作用域覆盖所有相关server块。
1、登录宝塔面板,进入【网站】→【设置】→【配置文件】,找到当前需启用负载均衡的站点配置文件顶部空白处(位于server块之外)。
2、插入以下upstream定义代码(示例含三台后端Web服务器):
upstream backend_cluster {
ip_hash;
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 weight=2;
server 192.168.1.103:8080 backup;
}
3、保存配置文件后,点击【重载Nginx】使upstream生效。
二、修改站点server块指向upstream
原站点配置中的root路径和index指令需替换为反向代理指令,使该域名的所有请求不再由本地处理,而是转发至upstream定义的服务器组。
1、在同一配置文件中,定位到当前站点的server块内部(即server { ... }范围内)。
2、删除原有的location / { root ...; index ...; }区块。
3、添加新的location /区块,内容如下:
location / {
proxy_pass http://backend_cluster;
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_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
4、保存配置文件,再次点击【重载Nginx】。
三、启用健康检查与故障自动剔除
Nginx默认不主动探测后端节点状态,需通过第三方模块或外部工具补足。宝塔环境可采用nginx_upstream_check_module的编译版本,或使用轻量级HTTP心跳脚本配合systemd服务实现简易检测。
1、确认当前Nginx是否已编译支持upstream_check:执行命令 nginx -V 2>&1 | grep -o 'upstream_check',若无输出则需重新编译Nginx或改用替代方案。
2、若已支持,在upstream定义中追加检查参数:
upstream backend_cluster {
ip_hash;
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 weight=2;
server 192.168.1.103:8080 backup;
check interval=3 rise=2 fall=3 timeout=1 type=http;
check_http_send "HEAD /health HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
3、确保各后端服务器根路径下存在可公开访问的/health端点,返回HTTP 200状态码。
四、配置SSL证书并透传HTTPS上下文
当站点启用HTTPS时,必须确保客户端协议信息正确传递至后端,避免因X-Forwarded-Proto缺失导致重定向循环或混合内容警告。
1、在宝塔【网站】→【SSL】中为该站点申请并部署有效证书。
2、在已配置的location /区块中,确认包含以下两行:
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
3、若后端应用依赖HTTPS判断(如生成绝对URL),还需在后端代码中读取X-Forwarded-Proto头,而非直接检查request.scheme。
五、验证负载分发效果与日志追踪
配置生效后,需通过实际请求观察分发行为是否符合预期,并借助Nginx访问日志确认各节点接收流量分布。
1、在宝塔【网站】→【日志】中开启当前站点的访问日志,或直接查看Nginx主日志文件:/www/wwwlogs/nginx.log。
2、使用curl命令发起多次请求并观察响应头中的X-Upstream-Address(需在location中添加:add_header X-Upstream-Address $upstream_addr;):
curl -I https://yourdomain.com
3、连续执行10次以上,记录每次返回的X-Upstream-Address值,比对是否按weight权重比例分配且backup节点仅在其余节点失效时响应。









