자동화를 통해 여러 사이트를 Cloudflare에 추가
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.comexport 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.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 커뮤니티에서 도움말이나 팁을 검색해보세요.
일반적인 문제
이 과정에서 오류가 나타나면 도메인이 등록되지 않았거나(또는 등록만 됐거나), 하위 도메인이거나, 유효하지 않을 수 있습니다. 다음 문서는 가장 일반적인 사례를 소개하고 있습니다.