Cloudflare API 또는 Cloudflare의 CLI 도구, flarectl을 사용하여 10개 이상의 여러 사이트를 추가하는 방법을 알아보시기 바랍니다.
개요
10개 이상의 여러 사이트를 한 번에 Cloudflare에 추가해야 하는 경우, Cloudflare API를 통해 처리할 수 있습니다. 여러 사이트를 추가하는 것은 다음과 같은 경우 유용합니다.
- 여러 도메인을 하나의 정식 도메인에 매핑하는 경우. 예: 여러 국가(.com.au, .co.uk, 기타)의 도메인을 Cloudflare로 보호하려는 경우
- 에이전시나 IT 컨설팅 회사로서 고객을 대신하여 여러 도메인을 관리하는 경우(주의: Cloudflare Partner 프로그램을 참조하시기 바랍니다)
- 기존 사이트를 Cloudflare로 이전하는 경우
특히 이름 서버를 변경하는 방법이나 DNS 레코드를 추가하는 방법에 이미 친숙한 경우, API를 사용하면 여러 사이트를 신속하고 효율적으로 추가할 수 있습니다.
필수 구성 요소
자동화를 통해 여러 사이트를 Cloudflare에 추가할 때 필요한 것:
- 기존 Cloudflare 계정(등록/로그인)
- 명령줄에 대한 기본 지식
- curl 설치(macOS & Linux의 경우 기본)
- Cloudflare API 키 보유
- 줄별로 작성된, 추가하려는 도메인 목록(줄 바꿈으로 구분됨). 예: "domains.txt"
API를 통한 도메인 추가
Cloudflare는 완벽한 기능을 갖춘 API(문서)를 갖추고 있으며, 이를 통해 새로운 도메인 생성을 자동화하는 것은 물론 DNS 레코드, Page Rules, 기타 다양한 보안 설정을 구성할 수 있습니다. Cloudflare는 이 API로 여러 도메인을 한 번에 자동 추가합니다.
터미널 애플리케이션(예: Terminal 또는 Terminal.app)을 열고 API 키와 이메일을 설정하세요.
export CF_API_EMAIL=you@example.com
export CF_API_KEY=abc123def456ghi789
이어서, 도메인 이름별로 간단한 루프를 작성하세요.
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": {1}, "name":"'$domain'","jump_start":true}'; done
"jump_start" 키에 따라 Cloudflare가 "www", "mail", "blog" 또는 기타 다양한 공통 DNS 레코드를 자동으로 검색하기 때문에 수동으로 구성하지 않아도 됩니다(하지만 검색된 DNS는 수동으로 확인해야 합니다). id_of_that_account는 계정 ID 아래 Cloudflare Overview 앱에 있습니다.
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.com
export 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 커뮤니티에서 도움말이나 팁을 검색해보세요.
일반적인 문제
이 과정에서 오류가 나타나면 도메인이 등록되지 않았거나(또는 등록만 됐거나), 하위 도메인이거나, 유효하지 않을 수 있습니다. 다음 문서는 가장 일반적인 사례를 소개하고 있습니다.