Cloudflare Docs
Support
Support
Visit Support on GitHub
Set theme to dark (⇧+D)

通过自动化将多个站点添加到 Cloudflare

了解如何使用 Cloudflare API 或 Cloudflare 的 CLI 工具 flarectl 一次向 Cloudflare 添加多个站点(10 个以上)。

​​ 本文内容


​​ 概述

如果需要一次向 Cloudflare 添加多个站点(10 个以上),可以通过 Cloudflare API 来完成。在以下情况下添加多个站点非常有用:

  • 将多个域名映射回单个规范域名,例如您希望 Cloudflare 保护的不同国家/地区(.com.au、.co.uk 等)的域名
  • 您是代理商或 IT 咨询公司,并为您的客户管理多个域名(注意:您应该考虑 Cloudflare 合作伙伴计划
  • 您要将现有的一组网站转移到 Cloudflare

使用 API,您可以快速地添加多个站点,特别是您已熟悉如何更改名称服务器添加 DNS 记录的情况下。


​​ 先决条件

要通过自动化将多个站点添加到 Cloudflare,您需要:


​​ 通过 API 添加域名

Cloudflare 具有功能齐全的 API( 文档),允许您自动创建新域名,以及配置 DNS 记录、页面规则和诸多安全设置。我们将使用此 API 自动同时添加多个域名。

打开您的终端应用程序(例如 Terminal 或 Terminal.app),并设置您的 API 密钥和电子邮件:

export CF_API_EMAIL=you@example.comexport CF_API_KEY=abc123def456ghi789

接着,我们编写一个简单的 for 循环来获取每个域名:

for domain in $(cat domains.txt);do \ curl -X POST -H "X-Auth-Key: $CF_API_KEY" -H "X-Auth-Email: $CF_API_EMAIL" \ -H "Content-Type: application/json" \ "https://api.cloudflare.com/client/v4/zones"\ --data '{"account": {"id": "id_of_that_account"}, "name":"'$domain'","jump_start":true}'; done

“jump_start”键会使 Cloudflare 自动尝试扫描常见 DNS 记录,例如“www”、“mail”和“blog”等等;这样,您就不必手动配置它们(但仍然要确认我们已全部找到它们)。id_of_that_account 可在 Cloudflare 概述应用的帐户 ID 下找到。

API 会返回响应,包括您需要在您的注册商处(您注册域名的地方)更改的 名称服务器

{ "result": { "id": "abc123def456ghi789", "name": "example.com","status": "pending", "paused": false, "type": "full", "development_mode": 0, "name_servers": [ "chad.ns.cloudflare.com","lucy.ns.cloudflare.com"], "original_name_servers": [ "ns-cloud-e1.googledomains.com","ns-cloud-e2.googledomains.com","ns-cloud-e3.googledomains.com","ns-cloud-e4.googledomains.com"], "original_registrar": null, "original_dnshost": null, "modified_on": "2018-02-12T01:42:13.827149Z", "created_on": "2018-02-12T01:42:13.827149Z", "meta": { "step": 4, "wildcard_proxiable": false, "custom_certificate_quota": 0, "page_rule_quota": 3, "phishing_detected": false, "multiple_railguns_allowed": false }, "owner": { "id": "abc123def456ghi789", "type": "user", "email": "you@example.com" }, "account": { "id": "abc123def456ghi789", "name": "you@example.com" }, "permissions": [ "#access:edit", "#access:read", "#analytics:read", "#app:edit", "#billing:edit", "#billing:read", "#cache_purge:edit", "#dns_records:edit", "#dns_records:read", "#lb:edit", "#lb:read", "#logs:read", "#member:edit", "#member:read", "#organization:edit", "#organization:read", "#ssl:edit", "#ssl:read", "#subscription:edit", "#subscription:read", "#waf:edit", "#waf:read", "#worker:edit", "#worker:read", "#zone:edit", "#zone:read", "#zone_settings:edit", "#zone_settings:read" ], "plan": { "id": "0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "name": "Free Website", "price": 0, "currency": "USD", "frequency": "", "is_subscribed": true, "can_subscribe": false, "legacy_id": "free", "legacy_discount": false, "externally_managed": false } }, "success": true, "errors": [], "messages": []}

注意响应中的 “name_servers” 键。对于您在帐户下添加的所有站点,这些通常是同一对,例如:

"name_servers": [
"chad.ns.cloudflare.com",
"lucy.ns.cloudflare.com"
]

复制提供给您的值(不是上面的值)并在您的注册商处 更新名称名服务器


​​ 通过 flarectl(Cloudflare 的 CLI 工具)添加域名

您还可以使用 Cloudflare 的官方 CLI 工具 flarectl 添加域名。您可以为您的操作系统(Windows、macOS/Darwin、Linux) 下载预建程序包,并用来创建域名。

您需要先设置 API 凭据:

export CF_API_EMAIL=you@example.comexport CF_API_KEY=abc123def456ghi789

… 然后在 flarectl 中运行以下命令:

for domain in $(cat domains.txt);do flarectl zone create --zone=$domain --jumpstart=false; done

在此之后,可以通过“flarectl zone list”获取每个域的名称服务器:

for domain in $(cat domains.txt);do flarectl zone info --zone=$domain; done

Cloudflare 社区中搜索帮助或提示。


​​ 常见问题

如果此过程中返回了任何错误,则域名可能未注册(或刚刚注册),或者它是子域或无效。以下文章介绍了最常见的情况: