Code6OfficeBETA
초급 가이드 · 웹사이트 공개

웹사이트 공개 8편: HTTPS와 www 정리

웹사이트 공개 실습 8/14 · 가상 프로젝트 작은 작업실 기준입니다. example.com은 설명용 예약 도메인입니다. 실제 연결에는 본인 소유 도메인을 사용하세요.

이번 편의 목표

대표 주소를 https://example.com 형태로 정하고 HTTP·www 접속을 정리합니다. 아래 예제 주소는 모두 본인 도메인으로 바꿉니다.

HTTPS 확인하기

  1. Cloudflare에서 도메인을 선택하고 SSL/TLS의 Edge Certificates를 엽니다. Universal SSL 인증서가 활성 상태인지 확인합니다.
  2. 브라우저에서 대표 HTTPS 주소와 /notes/hello를 엽니다. 인증서 경고가 있다면 무시하고 진행하지 않습니다.
  3. Always Use HTTPS를 켭니다. HTTPS가 이미 열리더라도 HTTP 요청이 자동 전환된다는 뜻은 아닙니다.
  4. Mac 터미널은 curl -I http://example.com/notes/hello, Windows PowerShell은 curl.exe -I http://example.com/notes/hello로 확인합니다. HTTPS 목적지를 가리키는 301 또는 308 응답을 봅니다.

Cloudflare가 활성 도메인에 제공하는 Universal SSL은 발급·갱신을 관리합니다. 하지만 도메인·DNS·프록시·인증서 상태가 계속 정상이어야 합니다. Tunnel 연결과 브라우저 측 인증서 확인도 구분하세요. 이 예제에서 서비스 URL의 HTTP는 같은 Docker 네트워크의 앱 연결이며 방문자의 HTTPS 주소와 다른 구간입니다.

www도 대표 주소로 보내기

  1. Tunnel에 www 호스트의 공개 경로를 추가해 같은 http://web:3000으로 연결합니다. 해당 DNS가 Cloudflare 경로를 통하도록 확인합니다.
  2. 도메인의 Rules에서 Redirect Rule을 만듭니다. Cloudflare의 ‘WWW to root’ 템플릿을 찾으면 이를 기준으로 설정합니다.
  3. 일치 대상은 www.example.com, 목적지는 대표 https://example.com으로 지정하되 경로와 쿼리를 보존합니다. 공식 예제의 동적 표현식은 concat("https://example.com", http.request.uri.path)이며 본인 도메인으로 바꿉니다. 상태는 301, 쿼리 보존은 켭니다.
  4. https://www.example.com/notes/hello?from=test를 열어 대표 도메인의 같은 경로와 쿼리로 이동하는지 확인합니다. 루트 첫 화면으로만 보내면 설정이 불완전합니다.

자주 막히는 지점

Create Rule이 안 보여요. 계정 전체 화면인지 도메인 내부인지, 현재 로그인 계정에 수정 권한이 있는지 확인합니다. 화면 이름이 바뀌면 Redirect Rules와 공식 템플릿을 찾습니다.

www를 Tunnel에 붙였는데 주소가 그대로예요. 같은 앱에 연결한 것과 대표 주소로 리디렉션하는 것은 다릅니다.

전환이 반복돼요. Cloudflare와 앱 양쪽에서 서로 반대 주소로 보내는 규칙이 있는지 확인합니다. 무작정 암호화나 인증서 검사를 끄지 않습니다.

완료 기준과 검증

HTTP·HTTPS·www의 결과를 각각 확인해야 완료입니다. 이 예제의 실제 인증서 발급·www 리디렉션은 가상 도메인으로 실행하지 않았습니다.

공식 자료 확인: 2026-11-15. Universal SSL(영문), Always Use HTTPS(영문), WWW 전환 예제(영문).


7편: Tunnel로 컨테이너 연결 · 9편: 접속 오류를 구분하는 순서