如何批量管理宝塔面板中的多个站点?

2026-05-06 19:011阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计1203个文字,预计阅读时间需要5分钟。

如何批量管理宝塔面板中的多个站点?

错误域名名不会立即报错,但后续进行SSL申请、反向代理或Nginx配置都会失效。最典型的现象是访问返回404或直接跳转到默认站。关键不是重启重建,而是配置更改后需重新加载服务。

  • 先在 网站 列表里选中目标站点 → 点击 设置 → 左侧点 域名管理,这里能增删改主域名和绑定域名,改完点 保存
  • 如果已启用 SSL,改完域名后必须重新申请证书:回到站点设置 → SSL → 点 申请(旧证书不会自动更新)
  • 若用了反向代理,反向代理 页面里的目标 URL 不会自动适配新域名,需手动检查是否含旧域名硬编码
  • 改完务必点右上角 重载 Web 服务,否则 Nginx 配置不生效——这是 80% 的人卡住的地方

用宝塔 API 批量创建站点的最小可行脚本

官方文档藏得深,实际调用只需要三个参数:name(站点名)、path(根目录)、port(端口,一般 80)。所有操作走 POST,Header 必须带 Content-Type: application/json 和有效的 login_token

  • 先在宝塔面板「安全」→「API 接口」开启并复制 login_token,别用默认空 token
  • 脚本示例(Python):

    import requests data = {"name": "site1", "path": "/www/wwwroot/site1", "port": "80"} r = requests.post("https://your-server:8888/panel/v1/site/create_site", json=data, headers={"Content-Type": "application/json", "login_token": "xxx"}) print(r.json())

  • 注意路径必须以 /www/wwwroot/ 开头,且不能存在同名目录,否则返回 {"status":false,"msg":"目录已存在"}
  • 批量执行时加个 0.5 秒间隔,否则高并发下宝塔会返回 502 Bad Gateway

多站点共用同一 SSL 证书但域名不匹配的报错处理

常见错误信息是 SSL certificate does not include the domain 或浏览器提示“您的连接不是私密连接”。本质是证书 SAN(Subject Alternative Name)没覆盖当前访问的域名,不是宝塔界面显示“已启用 SSL”就真能用。

  • 进站点设置 → SSL → 点 证书详情,看 Domains 列表是否包含你正在访问的域名(区分 www 和非 www)
  • Let’s Encrypt 免费证书最多支持 100 个域名,但单次申请只认你在面板里填的那些;如果后期新增子域名,必须重新申请,不能只点“续签”
  • 若想一个证书管多个站点,建议统一用泛域名证书(如 *.example.com),申请时在域名栏填 example.com*.example.com
  • 证书部署后,Nginx 配置里 ssl_certificate 指向的是 /www/server/panel/vhost/cert/ 下对应站点的目录,别手动改路径,否则 reload 后丢失

批量停用/启用站点时 Nginx 配置残留问题

点“停止”按钮只是关掉该站点的 server 块,但不会删掉 include 引用语句。下次启站或重载服务时,Nginx 可能因引用了已删除的 conf 文件而启动失败,报错 nginx: [emerg] open() "/www/server/panel/vhost/nginx/xxx.conf" failed (2: No such file)

  • 停用前先确认该站点是否被其他配置 include:搜索 /www/server/panel/vhost/nginx/ 下所有 .conf 文件,grep xxx\.conf(xxx 是站点名)
  • 真正要批量停用,别依赖面板按钮,直接删 /www/server/panel/vhost/nginx/xxx.conf,再执行 bt 1(重载 Nginx)
  • 如果用了宝塔的“计划任务”自动启站,记得同步关掉对应任务,否则半夜它自己又把站点拉起来了
  • 启用旧站点前,务必检查 /www/wwwroot/xxx 目录是否存在且权限为 www:www,否则 Nginx worker 进程读不到文件,日志里只有 Permission denied

批量操作最麻烦的从来不是怎么点,而是每一步背后 Nginx 和文件系统的耦合关系——改配置、删文件、调权限、重载服务,四个动作缺一不可,漏一个就会卡在某个看似无关的报错里。

本文共计1203个文字,预计阅读时间需要5分钟。

如何批量管理宝塔面板中的多个站点?

错误域名名不会立即报错,但后续进行SSL申请、反向代理或Nginx配置都会失效。最典型的现象是访问返回404或直接跳转到默认站。关键不是重启重建,而是配置更改后需重新加载服务。

  • 先在 网站 列表里选中目标站点 → 点击 设置 → 左侧点 域名管理,这里能增删改主域名和绑定域名,改完点 保存
  • 如果已启用 SSL,改完域名后必须重新申请证书:回到站点设置 → SSL → 点 申请(旧证书不会自动更新)
  • 若用了反向代理,反向代理 页面里的目标 URL 不会自动适配新域名,需手动检查是否含旧域名硬编码
  • 改完务必点右上角 重载 Web 服务,否则 Nginx 配置不生效——这是 80% 的人卡住的地方

用宝塔 API 批量创建站点的最小可行脚本

官方文档藏得深,实际调用只需要三个参数:name(站点名)、path(根目录)、port(端口,一般 80)。所有操作走 POST,Header 必须带 Content-Type: application/json 和有效的 login_token

  • 先在宝塔面板「安全」→「API 接口」开启并复制 login_token,别用默认空 token
  • 脚本示例(Python):

    import requests data = {"name": "site1", "path": "/www/wwwroot/site1", "port": "80"} r = requests.post("https://your-server:8888/panel/v1/site/create_site", json=data, headers={"Content-Type": "application/json", "login_token": "xxx"}) print(r.json())

  • 注意路径必须以 /www/wwwroot/ 开头,且不能存在同名目录,否则返回 {"status":false,"msg":"目录已存在"}
  • 批量执行时加个 0.5 秒间隔,否则高并发下宝塔会返回 502 Bad Gateway

多站点共用同一 SSL 证书但域名不匹配的报错处理

常见错误信息是 SSL certificate does not include the domain 或浏览器提示“您的连接不是私密连接”。本质是证书 SAN(Subject Alternative Name)没覆盖当前访问的域名,不是宝塔界面显示“已启用 SSL”就真能用。

  • 进站点设置 → SSL → 点 证书详情,看 Domains 列表是否包含你正在访问的域名(区分 www 和非 www)
  • Let’s Encrypt 免费证书最多支持 100 个域名,但单次申请只认你在面板里填的那些;如果后期新增子域名,必须重新申请,不能只点“续签”
  • 若想一个证书管多个站点,建议统一用泛域名证书(如 *.example.com),申请时在域名栏填 example.com*.example.com
  • 证书部署后,Nginx 配置里 ssl_certificate 指向的是 /www/server/panel/vhost/cert/ 下对应站点的目录,别手动改路径,否则 reload 后丢失

批量停用/启用站点时 Nginx 配置残留问题

点“停止”按钮只是关掉该站点的 server 块,但不会删掉 include 引用语句。下次启站或重载服务时,Nginx 可能因引用了已删除的 conf 文件而启动失败,报错 nginx: [emerg] open() "/www/server/panel/vhost/nginx/xxx.conf" failed (2: No such file)

  • 停用前先确认该站点是否被其他配置 include:搜索 /www/server/panel/vhost/nginx/ 下所有 .conf 文件,grep xxx\.conf(xxx 是站点名)
  • 真正要批量停用,别依赖面板按钮,直接删 /www/server/panel/vhost/nginx/xxx.conf,再执行 bt 1(重载 Nginx)
  • 如果用了宝塔的“计划任务”自动启站,记得同步关掉对应任务,否则半夜它自己又把站点拉起来了
  • 启用旧站点前,务必检查 /www/wwwroot/xxx 目录是否存在且权限为 www:www,否则 Nginx worker 进程读不到文件,日志里只有 Permission denied

批量操作最麻烦的从来不是怎么点,而是每一步背后 Nginx 和文件系统的耦合关系——改配置、删文件、调权限、重载服务,四个动作缺一不可,漏一个就会卡在某个看似无关的报错里。