앞선 글인 [나의 첫 블로그 2] 워드프레스로 시작하기에서 블로그를 운영하는 데 필요한 세 가지를 정리했다.
- 도메인: 블로그에 접속할 때 사용하는 주소
- 호스팅: 블로그 파일과 데이터를 저장하는 서버 공간과 운영 환경
- 워드프레스: 글과 페이지를 작성하고 사이트를 관리하는 프로그램
카페24에서 호스팅과 워드프레스 설치는 마쳤다. 이제 Cloudflare에서 관리하는 개인 도메인을 카페24에 연결할 차례다.
개인 도메인을 사용하면 호스팅 업체를 바꾸더라도 같은 주소를 계속 사용할 수 있다. 블로그 이름을 알리거나 애드센스를 운영할 계획이라면 카페24의 기본 주소보다 개인 도메인을 사용하는 편이 낫다.
Cloudflare를 사용하는 이유
나는 기존에도 Cloudflare에서 도메인과 DNS를 관리하고 있었다. 도메인을 구입할 당시 가격도 카페24보다 조금 저렴했다.
DNS는 도메인을 실제 서버 주소와 연결한다. Cloudflare 프록시를 켜면 방문자의 요청이 카페24 서버로 바로 전달되지 않고 Cloudflare를 거쳐 전달된다.
이때 Cloudflare의 캐시와 보안 기능을 사용할 수 있다. DNS 조회 결과에도 카페24 서버 대신 Cloudflare IP가 표시된다. 다만 다른 DNS 레코드나 과거 기록을 통해 원본 IP가 알려질 수 있으므로 완전히 숨겨지는 것은 아니다.
Cloudflare는 이미지와 CSS, JavaScript 같은 정적 파일을 기본적으로 캐시한다. HTML 페이지는 별도의 규칙을 만들지 않으면 기본적으로 캐시하지 않는다. 속도 개선 정도는 사이트 구성과 방문자 위치에 따라 달라진다.
Cloudflare에서 도메인 구매하기
여기서는 Cloudflare Registrar에서 도메인을 직접 구매하는 경우만 설명한다.
Cloudflare 대시보드에서 도메인 등록 메뉴로 이동한 뒤 원하는 도메인을 검색한다.
도메인 → 등록

원하는 도메인을 검색하면 구매 가능한 도메인과 가격이 표시된다.

Cloudflare Registrar는 자동 갱신이 기본으로 켜져 있다. 필요하지 않다면 도메인을 구매한 뒤 설정에서 끌 수 있다.
도메인을 선택한 뒤 이름, 이메일, 전화번호, 주소 등 등록자 정보를 입력한다. 연락처 정보는 정확하게 작성하는 것이 좋다.
결제 정보를 입력하면 도메인 구매가 끝난다.

Cloudflare에서 직접 구매한 도메인은 Cloudflare DNS가 기본으로 연결되므로 별도의 네임서버 변경 과정은 필요하지 않다.
카페24 서버 IP 확인
도메인을 카페24에 연결하려면 워드프레스가 설치된 서버 IP를 확인해야 한다.
카페24에 로그인한 뒤 다음 메뉴로 이동한다.
나의 서비스 관리 → 호스팅관리 → 기본관리 → 서비스 사용현황
서버아이피 항목에 표시된 IP 주소를 복사한다. 이 IP를 Cloudflare DNS에 입력할 예정이다.

Cloudflare DNS 레코드 등록
Cloudflare 대시보드에서 도메인을 선택한 뒤 다음 메뉴로 이동한다.
DNS → 레코드
레코드 추가를 눌러 다음 두 항목을 만든다.
| 유형 | 이름 | 대상 | 프록시 상태 |
| A | @ | 카페24 서버 IP 주소 | DNS 전용 |
| A | www | 카페24 서버 IP 주소 | DNS 전용 |
@는 cocopinote.com처럼 앞에 문자가 붙지 않은 기본 도메인을 뜻한다. www는 www.cocopinote.com으로 접속할 때 사용한다.
카페24는 SSL 인증서 발급을 위해 기본 도메인과 www 도메인이 모두 카페24 서버 IP로 연결되어 있어야 한다고 안내한다.
처음에는 두 레코드 모두 DNS 전용으로 설정한다.
Cloudflare 프록시를 켜면 DNS 조회 결과에 Cloudflare IP가 표시된다. 반면 카페24는 SSL 발급 과정에서 도메인의 IP가 카페24 서버 IP와 일치하는지 확인한다. 따라서 인증서가 발급될 때까지 DNS 전용으로 두는 편이 안전하다.

카페24에 개인 도메인 연결
DNS 설정을 마쳤다면 카페24로 돌아가 개인 도메인을 연결한다.
나의 서비스 관리 → 호스팅관리 → 기본관리 → 도메인 연결관리
도메인 직접 입력하기를 선택한 뒤 도메인을 입력한다.
cocopinote.com
도메인을 연결하더라도 바로 대표 도메인으로 변경하지는 않는다. 먼저 DNS가 반영되고 SSL 인증서가 설치되는지 확인한다.
DNS 변경 내용은 바로 반영되지 않을 수 있다. 카페24는 일반적인 도메인 연결에 약 30분에서 1시간, 네임서버 변경에는 최대 24~48시간이 걸릴 수 있다고 안내한다.

SSL 인증서 확인
카페24 뉴매니지드 워드프레스는 연결한 개인 도메인에 무료 SSL 인증서를 자동으로 발급한다.
도메인 연결관리 화면에서 상태가 다음과 같이 표시되는지 확인한다.
인증서 설치 완료
인증서가 설치되면 다음 주소로 접속해 본다.
https://cocopinote.com
https://www.cocopinote.com
발급 대기 상태가 오래 유지된다면 먼저 DNS 레코드와 서버 IP가 일치하는지 확인한다.
상태가 재요청으로 표시되면 재요청을 누른다. DNS가 정상인데도 발급되지 않는다면 최대 3시간 정도 기다린 뒤 카페24에 문의하는 것이 좋다.
A 레코드와 CNAME 설정이 정상인데도 인증서가 발급되지 않는다면 다시 한번 설정들을 검토해서 확인해야한다.
A 레코드가 정상인데도 발급되지 않는다면 카페24에 문의해 와일드카드 CNAME 상태를 확인한다. 이 레코드는 사용자가 직접 확인하거나 추가할 수 없다.

대표 도메인 변경
SSL 인증서 설치가 끝나면 개인 도메인을 대표 도메인으로 지정한다.
나의 서비스 관리 → 호스팅관리 → 기본관리 → 도메인 연결관리
연결한 도메인을 선택한 뒤 대표 도메인으로 변경을 누른다.
뉴매니지드 워드프레스에서는 대표 도메인을 변경하면 워드프레스 사이트 주소도 자동으로 변경된다. 변경 후 관리자 페이지와 주요 글, 이미지가 정상적으로 열리는지 확인한다.
Cloudflare SSL/TLS 모드 설정
Cloudflare에서 다음 메뉴로 이동한다.
SSL/TLS → 개요
암호화 모드는 Full (strict)로 설정한다.
Full (strict)는 방문자와 Cloudflare 사이뿐 아니라 Cloudflare와 카페24 서버 사이의 연결도 암호화한다. 원본 서버의 인증서가 유효하고 도메인과 일치하는지도 확인한다.
카페24 서버에 정상적인 SSL 인증서가 설치되어 있으므로 Full (strict)를 사용할 수 있다.
Flexible은 Cloudflare와 원본 서버 사이를 HTTP로 연결한다. 카페24 서버에 SSL 인증서가 설치된 현재 구성에서는 사용할 필요가 없다.

카페24 디렉토리 접속설정 확인
카페24 뉴매니지드 워드프레스는 보안을 위해 /wp-admin 접속을 국내 IP 또는 특정 IP로 제한한다. 해외에서 관리자 페이지에 접속하면 403 Forbidden 오류가 발생할 수 있다.
Cloudflare 프록시를 켜면 카페24 서버에는 방문자 IP 대신 Cloudflare 서버의 IP가 전달된다. 이 때문에 국내에서 접속하더라도 카페24가 해외 접속으로 판단해 관리자 페이지를 차단할 수 있다.
프록시를 켜기 전에 카페24에서 다음 메뉴로 이동한다.
나의 서비스 관리 → 호스팅관리 → 보안관리 → 디렉토리 접속설정
목록에서 /wp-admin에 적용된 국내 IP 제한 설정을 확인한다. Cloudflare를 통해 관리자 페이지에 접속할 예정이라면 해당 설정을 삭제해 제한을 해제한다. 카페24도 해외 접속이 필요할 때는 규칙을 삭제하거나 특정 IP만 허용하도록 변경할 수 있다고 안내한다.
다만 제한을 완전히 해제하면 관리자 페이지가 외부에 노출된다. 이후에는 Cloudflare의 보안 규칙이나 워드프레스 로그인 보안 기능을 이용해 /wp-admin과 로그인 페이지를 보호하는 편이 좋다.

Cloudflare에서 관리자 페이지 보호하기
카페24의 /wp-admin 접속 제한을 해제했으므로 Cloudflare에서 관리자 페이지를 다시 보호했다.
Cloudflare 대시보드에서 다음 메뉴로 이동한다.
도메인 → 개요 → cocopinote.com → 보안 → 보안 규칙 → 규칙 생성 → 사용자 지정 규칙
규칙 이름은 wordpress_adm으로 정했다.
식 편집을 누른 뒤 다음 내용을 입력한다.
ip.src.country ne "KR" and (
http.request.uri.path eq "/wp-login.php" or
http.request.uri.path eq "/wp-admin" or
(
starts_with(http.request.uri.path, "/wp-admin/") and
http.request.uri.path ne "/wp-admin/admin-ajax.php"
)
)
이 규칙은 접속 국가가 한국이 아니면서 다음 주소로 접근하는 요청을 대상으로 한다.
/wp-login.php/wp-admin/wp-admin/아래의 관리자 경로
/wp-admin/admin-ajax.php는 예외로 두었다. 워드프레스의 일부 테마와 플러그인은 일반 방문자 화면에서도 이 파일을 이용해 AJAX 요청을 처리하기 때문이다. 이 경로까지 막으면 댓글, 검색, 문의 양식 같은 기능에 문제가 생길 수 있다.
해외에서는 관리자 페이지에 접속할 필요가 없고 한국 외 접속을 완전히 차단하려면 작업을 차단으로 설정할 수 있다. Cloudflare 사용자 지정 규칙은 조건에 맞는 요청에 차단이나 관리형 챌린지를 적용할 수 있다.
규칙을 저장한 뒤에는 Cloudflare의 보안 이벤트에서 정상적으로 적용되는지 확인한다.
이 규칙은 @와 www DNS 레코드의 프록시가 켜져 있을 때만 적용된다. DNS 전용 상태에서는 웹 요청이 Cloudflare를 통과하지 않으므로 WAF 규칙도 적용되지 않는다.

Cloudflare 프록시 켜기
카페24 SSL 인증서 설치를 확인한 뒤 Cloudflare DNS 메뉴로 돌아간다.
앞서 만든 @와 www 레코드를 DNS 전용에서 프록시됨으로 변경한다. 회색 구름이 주황색으로 바뀌면 웹 요청이 Cloudflare를 거쳐 전달된다.
프록시를 켜면 캐시, 보안 규칙, DDoS 방어 같은 Cloudflare 기능을 사용할 수 있다.

카페24는 SSL 발급 시 도메인의 A 레코드가 서버 IP와 일치해야 한다고 안내한다. 반면 Cloudflare 프록시가 켜진 도메인을 조회하면 Cloudflare IP가 표시된다.
카페24 공식 안내에서 Cloudflare 프록시가 인증서 자동 갱신을 반드시 방해한다고 명시한 내용은 찾지 못했다. 따라서 평소에는 프록시를 켜 두되, 나중에 인증서 발급이나 갱신에 실패한다면 다음 순서로 확인하는 것이 좋다.
@와www를 임시로 DNS 전용으로 변경한다.- DNS가 카페24 서버 IP로 확인되는지 점검한다.
- 카페24에서 인증서 재요청을 진행한다.
- 설치가 끝나면 다시 프록시됨으로 변경한다.
연결 확인
마지막으로 다음 항목을 확인한다.
cocopinote.com과www.cocopinote.com이 모두 열리는지- 브라우저에 인증서 오류가 없는지
- 워드프레스 관리자 페이지에 로그인할 수 있는지
@와www레코드가 프록시됨 상태인지- SSL/TLS 모드가 Full (strict)인지
- 글과 이미지가 정상적으로 표시되는지
모두 정상이라면 Cloudflare와 카페24 연결은 끝난 것이다.
다음 글에서는 워드프레스의 기본 설정과 필요한 플러그인을 정리해 보려고 한다.