一个下午绑了80个域名到30个站点上,DNS解析、Nginx配置、SSL证书三个环节全自动化之后才发现,真正卡脖子的不是技术方案,是域名备案和服务器归属地的匹配逻辑
30个站点80个域名,按传统方式一个个手动绑——登DNS后台、添加A记录、等解析生效、登服务器、新建站点、配Nginx、申请SSL证书、绑到站点目录——一套流程走下来,一个站点平均15分钟。80个域名就是20个小时,两天半的工作量。但如果把DNS、服务器、证书三个环节拆开,各自走API通道,80个域名一个下午就能搞定。下面按这个三环节流程拆开说。
📊 域名批量绑定建站的三个核心环节及自动化方案
| 环节 | 手动耗时/个 | 自动化方案 | 批量后耗时 | 关键工具 |
| DNS解析 | 3-5分钟 | Cloudflare API批量添加 | 10秒/个 | CF API / DNSPod API |
| 站点创建+域名绑定 | 5-8分钟 | 宝塔API批量创建站点 | 5秒/个 | 宝塔面板API / Nginx脚本 |
| SSL证书 | 2-3分钟 | acme.sh批量签发 | 8秒/个 | acme.sh / Certbot |
一、DNS批量解析:Cloudflare API两行命令搞定
域名绑定的第一步是DNS解析,把域名指向服务器IP。Cloudflare的API是最成熟的方案——免费套餐支持A、AAAA、CNAME、MX等全类型记录,批量操作没有数量限制(免费账户也可以管理几千个域名)。
操作流程分两步:先把域名批量添加到Cloudflare账户(这一步需要去域名注册商改NS记录,没法完全自动化),然后通过API批量添加DNS解析记录。第二步可以全自动完成:
# 第一步:批量添加域名到Cloudflare(每个域名执行一次)

curl -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"example.com","jump_start":true}'
# 第二步:拿到zone_id后,批量添加解析记录
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"www","content":"1.2.3.4","ttl":120,"proxied":true}'
80个域名的话,写一个shell循环读取域名列表,自动遍历执行上面两个API即可。不过要注意Cloudflare API的速率限制:免费账户每分钟1200次请求,批量绑几百个域名完全够用,几千个的话中间加sleep间隔就行。
DNS生效时间提醒:新增解析记录通常5-10分钟内全球生效,但不同注册商的NS切换可能需要24-48小时。批量操作时建议提前一天把域名NS全改成Cloudflare的,第二天再跑批量解析脚本,否则会出现"API返回成功但实际还没生效"的情况。
二、服务器端:宝塔面板API批量创建站点
DNS解析完之后,服务器端需要创建对应的站点目录、Nginx配置、绑定域名。如果用的是宝塔面板,它提供了完整的API接口,可以程序化创建站点。流程是:在宝塔面板"设置→面板API"中开启接口,获取API密钥,然后用Python或Shell脚本调用。
宝塔API创建站点的核心接口是 /site?action=AddSite,传参包括域名列表(逗号分隔)、站点根目录、PHP版本、FTP和数据库是否创建等。30个站点,一个循环跑完,约两分半钟全部建好:
# 宝塔API批量创建站点(Python)
import requests, json, time
BT_URL = "http://你的服务器IP:8888"
BT_KEY = "你的API密钥"
sites = [
{"domain": "site1.com,www.site1.com", "path": "/www/wwwroot/site1"},
{"domain": "site2.com,www.site2.com", "path": "/www/wwwroot/site2"},
]
for site in sites:

payload = {
"webname": json.dumps({"domain": site["domain"], "domainlist": [], "count": 0}),
"path": site["path"],
"type_id": "PHP", "version": "74",
"ps": site["domain"].split(",")[0],
"ftp": "false", "sql": "false",
"request_token": get_token(), "request_time": int(time.time())
}
r = requests.post(f"{BT_URL}/site?action=AddSite", data=payload)
不用宝塔面板的话,直接写Nginx配置模板+Shell脚本也能做到同样的效果。核心思路:准备一个Nginx虚拟主机配置模板,脚本读取域名列表,用sed替换模板中的域名和目录路径,生成Nginx配置文件放到sites-enabled目录,然后reload。这种方式更轻量但需要自己处理日志切割、SSL续期等运维细节。
三、SSL证书批量签发:acme.sh一劳永逸
现在浏览器对没有HTTPS的站点直接标"不安全",80个域名如果没有SSL证书,上线等于白上。Let's Encrypt的免费证书配合acme.sh工具,可以做到全自动签发+自动续期。批量场景下的核心配置是DNS API验证方式——不用在服务器上开80端口做HTTP验证,直接通过域名注册商的API添加TXT记录完成验证。
# 安装acme.sh并配置Cloudflare DNS API
curl https://get.acme.sh | sh
export CF_Token="你的Cloudflare_API_Token"
# 批量签发SSL证书(循环域名列表)
for domain in $(cat domains.txt); do
~/.acme.sh/acme.sh --issue --dns dns_cf -d $domain -d "*.$domain"
~/.acme.sh/acme.sh --install-cert -d $domain \
--key-file /www/server/panel/vhost/nginx/$domain.key \
--fullchain-file /www/server/panel/vhost/nginx/$domain.pem \
--reloadcmd "nginx -s reload"
done

注意参数里用了 -d "*.$domain" 表示签发泛域名证书,一个证书覆盖所有子域名,不需要每个子域名单独申请。另外Let's Encrypt对单IP每周有50个证书的申请上限,80个域名如果全部在一个服务器IP上,需要分两周申请,或者用多个服务器IP分散请求。
acme.sh的自动续期:安装完成后acme.sh会自动添加crontab任务,每天检查证书有效期,到期前30天自动续签。批量场景下这个特性极其重要——手动管理80个域名的SSL证书续期几乎是不可能完成的任务。
四、现成工具:不想写脚本的话,这些软件帮你做了全套
不是所有人都愿意折腾API脚本,市面上有几款工具已经把DNS→建站→证书→模板→内容发布整条链路做成了图形化操作:
365建站器
Windows客户端,对接宝塔面板API。核心功能:批量建站、域名绑定、模板随机分配、文章采集+伪原创+批量发布、百度token推送。适合50-500个站点的中型站群,一台Windows电脑就能管理。自带模板库,建站时自动给不同站点分配不同模板。
GOCO CMS
SaaS平台模式,不需要自己搭服务器。内置Cloudflare DNS自动管理、数百套AI模板、AI原创内容生成、自动SEO和收录提交。域名绑定和建站一键完成。按站点数收费,适合不想管服务器运维的轻量级站群需求。
宝塔面板+pybtpanel
开源Python包(GitHub上可搜到),封装了宝塔面板的完整API。不需要商业软件,自己写几十行Python就能实现域名批量绑定+站点创建+SSL部署。适合有编程基础、想完全掌控流程的用户。成本:0元。
WordPress Multisite
WordPress自带的站群模式,一个WP安装+一个数据库跑几百个子站。用Domain Mapping插件把独立域名映射到各子站。优势是内容管理和用户体系统一,缺点是所有站点共享一套WP核心和插件,一个站出问题可能影响全部。
五、最容易被忽略的一环:备案和服务器归属地
技术自动化跑通了,80个域名解析到位、站点建好、SSL配完,浏览器打开却显示"未备案拦截页"——这是国内服务器批量建站最常见的卡点。
国内服务器(阿里云、腾讯云等)对80/443端口的HTTP访问强制检查ICP备案。域名没备案→请求被拦截→网站打不开。关键问题是:一个备案主体(个人或企业)能备案的域名数量有限制,个人通常不超过5-10个,企业视情况而定。80个域名如果全绑到国内服务器上,绝大部分会因为备案问题无法访问。
三个可行的绕过方案:①域名注册在国外注册商(Namesilo、Namecheap等),服务器用香港或海外的(免备案),Cloudflare做CDN加速——这是站群最常见的组合;②域名在国内注册但服务器放境外,通过Cloudflare隐藏源站IP;③主域名备案、子域名用泛解析走境外服务器,但这种方式存在合规风险,不建议长期使用。
另外一个容易被忽略的是域名注册商的分散策略。80个域名全部放在同一个注册商(比如全部在阿里云),一旦某个站点触发投诉,注册商可以批量冻结同一账户下的所有域名。建议把域名分散到3-5家注册商,每家不超过20个,降低单点风险。
六、建站之后的关联风险控制
域名绑完了、站点建好了,30个站全跑在同一台服务器上,百度蜘蛛爬一圈就能通过以下信号判断它们是关联站点:
🔗 同IP
30个站点共享一个IP地址,反向IP查询一秒钟全暴露。解决方案:Cloudflare CDN代理(橙色云朵),隐藏源站真实IP,每个站点对外展示的是CF的不同边缘节点IP。
📋 相同WHOIS
域名注册信息完全一样。解决:开启域名注册商的WHOIS隐私保护(多数注册商免费提供),或用不同注册信息分散注册。
🏗️ 相同网站结构
30个站用同一套模板、同一套TDK格式。解决:365建站器或GOCO的模板随机分配功能,或手动准备5-8套不同模板轮换使用。
📊 相同统计代码
30个站共用同一个百度统计ID或Google Analytics ID。解决:给每个站分配独立的统计代码,或者用自建统计(Matomo等)避免第三方追踪ID暴露关联。
🕒 同时上线
30个站点同一天注册域名、同一天解析、同一天上线。解决:分批操作,每批5-10个站点间隔1-2周上线,域名注册日期也尽量分散在不同月份。
🔐 相同NS记录
80个域名全用Cloudflare的NS。解决:分散DNS服务商——一部分用Cloudflare,一部分用DNSPod,一部分用域名注册商自带的DNS。
七、不同规模的方案对照
域名批量绑定这件事,技术自动化反而是最简单的部分——Cloudflare API + 宝塔API + acme.sh,三个轮子拼一起,200行脚本能把几百个域名的绑定流程压缩到一小时内。真正需要花精力规划的是备案合规路径、域名和服务器分散策略、以及上线后的关联风险控制。技术跑通了只是第一步,搜索引擎不把你30个站判为关联站群才是最终目标。UC建站系统的多站点管理看板可以在建站后统一监控各站的收录状态、SSL到期时间、域名解析健康度,把"建完之后就不管了"变成"建完之后持续可控"。
