← Cloudflare Fundamentals / fundamentals / manage-domains
Добавление нескольких сайтов с помощью автоматизации
Чтобы добавить несколько сайтов в Cloudflare сразу и более эффективно, используйте Cloudflare API.
Добавление нескольких сайтов может быть полезно, если вы:
- Несколько доменов могут указывать на один канонический домен: типичный случай для доменов в разных странах, например
.com.au,.co.uk- которые вы хотите защитить с помощью Cloudflare). - Являются партнёр ↗, агентством или ИТ-консалтинговой компанией и управляете несколькими доменами от имени своих клиентов.
- Переносят имеющийся набор сайтов на Cloudflare.
API позволяет быстро и эффективно добавлять несколько сайтов, особенно если вы уже знакомы с как изменить серверы имён или добавлять DNS-запись.
Это руководство предполагает, что домены будут добавляться с помощью основная настройка DNS (полная).
Предварительные требования
Чтобы добавить несколько сайтов в Cloudflare с помощью автоматизации, вам понадобится:
-
Существующий Аккаунт Cloudflare.
-
Командная строка с
curl -
Cloudflare API-токен с одним из следующих разрешений:
- На уровне зоны
Administrator - На уровне зоны
Zone: EditиDNS: Edit - На уровне аккаунта
Domain Administrator
- На уровне зоны
-
Чтобы отключить DNSSEC для каждого домена у вашего регистратора (там, где вы приобрели доменное имя).
Инструкции по DNSSEC для конкретного провайдера
Это не исчерпывающий список, но следующие ссылки могут быть полезны:
1. Добавьте домены
- Составьте список доменов, которые нужно добавить, каждый на отдельной строке (через перенос строки), и сохраните его в файл, например
domains.txt. - Создайте bash-скрипт
add-multiple-zones.shи добавьте следующее. Добавьтеdomains.txtв тот же каталог или соответствующим образом обновите его путь.
for domain in $(cat domains.txt); do
printf "Adding ${domain}:\n"
curl https://api.cloudflare.com/client/v4/zones \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"account": {
"id":"<ACCOUNT_ID>"
},
"name": "'"$domain"'",
"type": "full"
}'
printf "\n\n"
done- Откройте командную строку и выполните:
bash add-multiple-zones.shПосле добавления домена он будет находиться в статусе Pending Nameserver Update состояние.
Дополнительные параметры
jq
jq ↗ это инструмент командной строки, который разбирает и форматирует вывод в формате JSON.
Этот инструмент необходим для выполнения любых дополнительных шагов в этом руководстве.
echo '{"foo":{"bar":"foo","testing":"hello"}}' | jq .См. jq документация ↗, где это описано подробнее.
Быстрое сканирование
Cloudflare предлагает быстрое сканирование который помогает заполнить записи DNS зоны. Это сканирование выполняется по мере возможности на основе предопределенного списка часто используемых имен и типов записей.
Для этого вызова API требуется идентификатор домена. Его можно найти в следующих местах:
Использование jq с первым из указанных выше вариантов, измените свой скрипт add-multiple-zones.sh чтобы извлечь идентификатор домена и выполнить последующий вызов API для быстрого сканирования DNS-записей.
for domain in $(cat domains.txt); do
printf "Adding ${domain}:\n"
add_output=`curl https://api.cloudflare.com/client/v4/zones \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"account": {
"id":"<ACCOUNT_ID>"
},
"name": "'"$domain"'",
"type": "full"
}'`
echo $add_output | jq .
domain_id=`echo $add_output | jq -r .result.id`
printf "\n\n"
printf "DNS quick scanning ${domain}:\n"
scan_output=`curl --request POST https://api.cloudflare.com/client/v4/zones/$domain_id/dns_records/scan \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"`
echo $scan_output | jq .
done2. Обновите серверы имён
Чтобы каждый домен стал активным в Cloudflare, его необходимо активировать либо Полная настройка или Частичная настройка. Приведённый ниже скрипт выведет список серверов имён, связанных с каждым доменом.
Серверы имён ваших зон можно найти в следующих местах:
- Измените свой скрипт
add-multiple-zones.shчтобы вывести CSV-файл с данными изCreate Zoneответ в формате JSON.
for domain in $(cat domains.txt); do
printf "Adding ${domain}:\n"
add_output=`curl https://api.cloudflare.com/client/v4/zones \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"account": {
"id": "<ACCOUNT_ID>"
},
"name": "'"$domain"'",
"type": "full"
}'`
# Create csv of nameservers
echo $add_output | jq -r '[.result.name,.result.id,.result.name_servers[]] | @csv' >> /tmp/domain_nameservers.csv
domain_id=`echo $add_output | jq -r .result.id`
printf "\n\n"
printf "DNS quick scanning ${domain}:\n"
scan_output=`curl --request POST https://api.cloudflare.com/client/v4/zones/$domain_id/dns_records/scan \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"`
echo $scan_output | jq .
done
printf "name_servers are saved in /tmp/domain_nameservers"
cat /tmp/domain_nameservers.csv| ID | ZONE | NAME SERVERS |
|---|---|---|
| <ZONE_ID> | example.com |
arya.ns.cloudflare.com, tim.ns.cloudflare.com |
- Используйте значения из NAME SERVERS столбец в обновить серверы имён у регистратора каждого домена.
Ограничения
Количество доменов, которые можно добавить за один раз, ограничено: вы можете зарегистрировать не более 25 доменов каждые 10 минут.
Кроме того, если у вас более 50 доменов и доменов в состоянии pending больше, чем активных, добавление новых доменов будет заблокировано. Рекомендуем дождаться активации доменов в состоянии pending, прежде чем добавлять новые.
Частые проблемы
Если в ходе этого процесса возникли ошибки, домен может быть не зарегистрирован (или зарегистрирован совсем недавно), являться поддоменом или быть недействительным по другой причине. Подробнее см. Не удалось добавить домен.