宝塔面板如何配置后端负载均衡节点的宕机自动剔除健康探测

风萱君_2184

风萱君_2184

2026-04-08

835人浏览

原创

宝塔默认Nginx不支持健康检查,因未编译nginx_upstream_check_module模块;需通过nginx -V验证,若无upstream_check则须手动编译添加,或改用max_fails+proxy_next_upstream被动探测方案。

宝塔面板如何配置后端负载均衡节点的宕机自动剔除健康探测

宝塔默认Nginx不支持健康检查,别白忙活

宝塔面板自带的 Nginx(无论免费版还是专业版)默认**不编译** nginx_upstream_check_module 模块。你直接在 upstream 块里写 check interval=3,保存后点重载——Nginx 会报错:unknown directive "check",配置根本加载不了。

这不是你配置错了,是模块压根不存在。官方没集成,宝塔也没打包进去。想用主动探测,必须自己动手补模块或换内核。

验证当前Nginx是否支持 check 指令

别猜,先确认。SSH 登录宝塔服务器,执行:

nginx -V 2>&1 | grep -o 'upstream_check'

如果返回空,说明不支持;若输出 upstream_check,恭喜,可以直接跳到下一步写配置。

常见错误现象:

  • 配置里加了 check 却没报错 → 实际是被忽略,探测根本没跑
  • nginx -t 通过,但日志里反复出现 no live upstreams → 后端全被静默标记为 down,因为探测失败却无反馈

手动启用健康检查的三步实操

前提是你的 Nginx 版本 ≥1.10(宝塔常用 1.20+ 没问题),且你有编译权限。步骤不能跳:

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • 下载对应 Nginx 源码包(版本号必须和 nginx -v 完全一致)
  • 下载 nginx_upstream_check_module 补丁(GitHub 官方 repo,注意分支匹配)
  • 重新 configure + make + make install,保留原 conf 目录和证书路径,否则宝塔会丢配置

编译完成后,在 upstream 块中加入探测参数:

upstream backend_cluster {
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080 weight=2;
    check interval=3 rise=2 fall=5 timeout=1 type=http;
    check_http_send "HEAD /health HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}

注意:check_http_send 必须是合法 HTTP 请求行,结尾两个 \r\n 缺一不可;check_http_expect_alive 决定什么状态码算“活着”,别只写 http_2xx ——有些服务健康接口返回 302 也算正常。

没模块时的替代方案:被动剔除 + 轮询兜底

如果你不想编译,或生产环境不允许停机重装 Nginx,就靠 Nginx 原生机制保底:

  • 在 server 行后面加 max_fails=2 fail_timeout=10s:连续 2 次超时(默认 60s)就踢出 10 秒
  • 务必设 proxy_next_upstream error timeout http_500 http_502 http_503 http_504:遇到这些响应才转发给下一台
  • 所有后端必须提供真实可访问的 /health 接口,哪怕只是返回 200 ——你得自己用脚本定期 curl 它,发现异常就手动下线节点

这个方案不会自动“恢复”节点,fail_timeout 时间一到,它就自动回归流量池。但没人告诉你它什么时候恢复,也没法看到状态。最容易被忽略的是:proxy_next_upstream 默认**不包含** http_500,意味着后端崩了返回 500,Nginx 还是把错误甩给用户,而不是切走。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2783

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6990

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6486

10

php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

11964

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6861

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2195

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4368

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

5074

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3991

9

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
LLVM官方文档
LLVM官方文档

共0课时 | 0人学习