Cloudflare를 이용하여 도메인을 관리할 때 별도의 서브도메인 설정이 없는 경우 www 서브 도메인으로 트래픽을 전달하는 구성 방법을 소개한다.
Purpose
흔히 웹 사이트에 방문할 때 www.google.com이나 www.naver.com 같은 도메인을 봤을 것이다. 주로 메인 웹 사이트에 www 서브도메인을 할당하는데, 이 구성은 google.com이나 naver.com을 방문해도 www 서브도메인이 자동으로 할당된다. Cloudflare를 이용해 도메인을 관리하고 있다면, 다음과 같이 설정하여 이 구성을 이용할 수 있다.
Prepare
- Cloudflare 계정
- Cloudflare에서 도메인을 구매했거나, 가지고 있는 도메인을 Cloudflare로 이관한 경우
Setting
Set of Domain
처음 Cloudflare에 로그인을 하면 다음과 같이 관리할 수 있는 도메인을 확인할 수 있다.
관리 중인도메인을 클릭하면 여러 도메인 설정을 확인할 수 있는데 그중 DNS 설정에서 레코드에 방문한다. A, AAAA, CNAME, TXT 등 다양한 도메인 운영을 위한 설정을 레코드라 부른다.
레코드 설정에서 두 가지 구성을 진행한다. 티스토리 운영인 경우 유형을 CNAME 레코드로 설정하고 이름에는 www 대상에는 티스토리 대체 도메인을 관리하는 서버인 host.tistory.io를 입력한다. 개인인 호스팅 서버를 이용하고 있다면 유형을 A 레코드로 설정하고, 이름에는 www, 대상에는 공인아이피를 입력한다. Cloudflare에서 도메인 설정 시 프락시를 흔히 볼 수 있는데, 아래 그림과 같이 프락시를 설정할 경우 www.hakawati.co.kr을 방문 시 Cloudflare를 거쳐서 host.tistory.io로 전달되는 구조를 가진다. 이런 방식은 속도가 다소 느려지지만, 사이트 방문자 통계와 약간의 Cloudflare의 보안적 기능을 이용할 수 있다.
다음으로 구성해야 할 것은 hakawati.co.kr이다. 누군가가 www 없이 hakawati.co.kr을 도메인을 입력했을 때 레코드가 구성되어 있어야 어떤 형태로든 처리를 할 수 있기 때문이다. 이 경우 대상이 도메인이기 때문에 CNAME을 설정하고 이름은 @ (자기 자신을 의미) 대상을 www.hakawati.co.kr로 로 설정한다. 프락시 설정은 위 설명과 동일하다.
Set of Bulk Redirection
이제 www.hakawati.co.kr에 방문하면 티스토리 도메인이 잘 동작하나, hakawati.co.kr로 방문하면 www.hakawati.co.kr로로 전달(Redirection)을 하도록 구성해야 한다. Cloudflare에서는 이 설정을 대량 리디렉션(Bulk Redirection)에서 구성할 수 있다. 대량 리디렉션 설정은 다음 두 위치에서 동일하게 설정할 수 있다.
처음 생성은 리디렉션 이름을 설정한다. 이 이름은 20자 미만이어야 하고, 띄어쓰기는 불가능하다.
다음은 설정인데, 수동 추가 버튼을 선택한다. 원본 URL은 리디렉션이 되어야 할 URL, 대상 URL은 리디렉션 되어 방문할 URL을 의미한다. 상태는 301, 302, 307, 308 상태 코드를 선택할 수 있다. 301 리디렉션은 영구적 이동, 302 리디렉션은 임시적 이동을 의미한다. 도메인의 기준에서 301을 선택하면 사용자가 hakawati.co.kr을 입력하면 브라우저는 www.hakawati.co.kr로 완전한 이동을 하여 주소가 변경된다. 하지만 302는 주소가 변경되지 않고 hakawati.co.kr을 유지하고 내부적으로 www.hakawati.co.kr을 랜더링 하게 된다.
301 리디렉션 선택 이유
- 새로운 도메인으로 영구적으로 마이그레이션 할 경우
- HTTP에서 HTTPS로 전환하는 경우
- 여러 웹 사이트를 하나의 도메인으로 병합하는 경우
- www가 없는 도메인 방문 시 www 가 존재하는 것으로 구성할 경우
302 리디렉션 선택 이유
- 각각의 도메인을 유지한 채 하나의 웹 호스팅 서버로 병합하는 경우
- 웹 사이트의 페이지, 디자인, 성능 등 테스트를 위해 분할하는 경우
- 방문자가 사용하는 언어에 맞게 리디렉션 하는 경우
- 운영 중인 사이트가 SEO에 영향을 주지 않고 다른 페이지로 전달하고자 하는 경우
즉, 초기 구성을 할 경우 301을 선택해야 하고, 이미 많은 정보를 운영 중인 웹 서비스에 적용할 경우 검색엔진 노출(SEO)이 처음부터 다시 진행될 수도 있기에 이런 경우 302를 선택하는 것이 좋다. 참고로 SEO 관점에서 리디렉션 방식을 자주 변경하는 것은 검색엔진 입장에서 검색엔진에 노출할 웹 사이트가 불안정해 보이기에 부정적인 평가를 하게 되어 좋지 않다.
307은 302와 유사하고 308은 301과 유사한 리디렉션 상태 코드이다. 다만 차이는 HTTP Method를 유지하는 점이다. 301과 302는 어떤 HTTP Method가 오더라도 GET Method로 변경해 리디렉션 하는 반면, 307과 308은 HTTP Method를 유지해 리디렉션 한다. 만약 티스토리 블로그가 아니라 워드프레스 블로그이고, 다수의 사용자가 함께 운영한다면 307이나 308을 선택하는 것이 좋다. 그렇지 않더라도 안전성을 높이기 위해 308을 선택하는 것도 좋다.
마지막 구성으로 매개변수이다. 쿼리 문자열, 하위 경로, 경로 접미사 모두 유지하는 것으로 선택한다. 하위 도메인을 포함하도록 설정하면 asdf.hakawati.co.kr 같이 설정하지 않은 모든 하위 도메인들이 모두 www.hakawati.co.kr로 전달하는 구성인데, 도메인을 하위 도메인을 구분해 활용할 계획이면 설정하지 않는 것이 중요하다.
한번 더 검토를 위해 설정 정보를 보여준다. 검토 후 다음 버튼을 누른다. 그 후 리디렉션 규칙으로 계속 진행을 선택한다.
다음 방금 구성한 설정으로 배포를 진행한다. 배포 이름은 자유롭게 설정할 수 있다. 저장 및 배포를 누르면 구성한 설정이 즉시 배포된다.
Review
이제 http://hakawati.co.kr, http://www.hakawati.co.kr, https://hakawati.co.kr 어느 방식으로 사이트를 방문하더라도 https://www.hakawati.co.kr로 리디렉션이 발생하는 것을 확인할 수 있다. 참고로 구성의 순서를 변경하여 원본 웹 호스트를 hakawati.co.kr로 지정하고 www.hakawati.co.kr로 로 리디렉션하는 방식을 구성해도 큰 차이는 없을 수 있으나, 티스토리 기준에서는 하나의 도메인만 HTTPS 인증서를 제공하기 때문에 hakawati.co.kr을 등록하고 www.hakawati.co.kr로 로 리디렉션 구성을 하게 되면 인증서 문제가 발생한다. 따라서 운영하는 웹 서비스의 구성 상태에 따라 응용하는 것이 중요하다.