应先用wget -S测试install.sh请求的真实响应,再根据403/超时等结果分别绑定hosts、换下载源或检查安全组;必须分开写api.bt.cn和download.bt.cn的IP,且改完需执行bt restart。

宝塔面板安装插件卡在“请求中”或“正在下载”,90% 不是插件本身问题,而是面板前端发不出有效请求、或后端根本收不到响应——关键得看通信链路哪一环断了。
Network 面板里 install.sh 请求一直 pending 怎么办
这是最典型的假死现象:浏览器发了请求,但没收到任何 HTTP 状态码(200/403/timeout),前端就无限转圈。不能只等,必须自己查。
- 打开浏览器开发者工具(F12)→ Network 标签 → 点安装插件 → 找到 URL 含
install.sh的请求 - 若状态列显示
pending,右键复制该请求的完整 URL(如https://download.bt.cn/install/plugin/mysql57/install.sh) - 粘贴到终端执行:
wget -S [URL],观察真实返回:是403 Forbidden(CDN 拦截)、Connection refused(IP 不可达),还是压根没响应 - 如果
wget -S卡住超过 10 秒,说明服务器出向被阻(防火墙、安全组、DNS 污染),不是面板问题
/etc/hosts 绑定 api.bt.cn 和 download.bt.cn 为什么必须分开写
宝塔多个子域名走不同 CDN 节点,且部分请求(如元数据拉取)校验 SNI 或证书域名,混写会导致 SSL 验证失败或 403。
- 每个域名单独一行,例如:
103.219.118.174 api.bt.cn和103.224.251.67 download.bt.cn - 不要写成
103.219.118.174 api.bt.cn download.bt.cn—— 这会让 HTTPS 握手时证书匹配失败 - 改完后必须执行
bt restart,否则面板不会重读 hosts;仅改 hosts 不重启 = 白改 - 验证是否生效:
curl -I https://api.bt.cn/api/plugin应返回 200,curl -I https://download.bt.cn/install/plugin/mysql57/install.sh应返回 200 或 404(路径不存在才 404,不是连不上)
为什么换 DNS 对插件安装基本没用
宝塔很多请求(尤其是 download.bt.cn、api.bt.cn)走的是 IP 直连 + SNI,DNS 解析结果不参与实际连接。换 DNS 只影响初始域名解析,不影响后续 TCP 握手和 CDN 路由。
- 真正有效的排查方式是:
nslookup download.bt.cn看解析 IP 是否合理;再ping -c 3 download.bt.cn看是否通;最后curl -I https://[IP](把解析出的 IP 直接代入)看能否绕过 DNS 完成 TLS 握手 - 如果
nslookup返回异常 IP(比如 127.0.0.1 或国外冷门 IP),说明 DNS 污染,此时改/etc/hosts比换 DNS 快得多 - 云服务器用户务必检查安全组:出方向 443 端口是否放行?很多厂商默认只开入向,出向全拒
手动替换 install.sh 下载地址时,为什么不能改 install_6.0.sh 里的内容
宝塔从 6.0 版本起强制校验脚本签名,修改原始 install.sh 或 install_6.0.sh 会导致 Signature verification failed 直接退出,连日志都不打。
- 唯一安全的替换方式是:在执行安装命令时,直接换掉初始脚本 URL,例如把
https://download.btpanel.net/install/install_6.0.sh改为https://download.bt.cn/install/install_6.0.sh - 所有二级下载地址(如插件脚本、面板核心包)都由这个初始脚本内部拼接生成,换源后会自动沿用新域名
- 网上流传的“魔改版 install.sh”多数未签名,运行即失败;别信所谓“去广告版”“加速版”,它们大概率删了校验逻辑,等于裸奔
真正卡住的地方,往往藏在 wget -S 输出的第一行 HTTP 版本和状态码里——不是看面板有没有报错,是看网络层到底返回了什么。


















