deployment
커스텀 도메인
DNS 설정과 도메인 연결 가이드
커스텀 도메인
CF Pages 프로젝트에 커스텀 도메인을 연결하는 방법을 설명합니다. Modfolio 생태계의 2-프로젝트 모델(앱 + 랜딩)에 맞는 도메인 구성을 다룹니다.
CF Pages 커스텀 도메인 설정
기본적으로 CF Pages 프로젝트는 <project-name>.pages.dev 도메인으로 배포됩니다. 실제 서비스에는 커스텀 도메인을 연결해야 합니다.
경로: CF Dashboard → Workers & Pages → <프로젝트> → Custom domains → Set up a custom domain
- Custom domains 탭에서 Set up a custom domain 클릭
- 연결할 도메인 입력 (예:
naviaca.com) - DNS 레코드 자동 생성 확인 → Activate domain 클릭
Cloudflare DNS를 사용하는 도메인이면 CNAME이 자동 추가됩니다. 외부 DNS는 수동 설정이 필요합니다.
DNS CNAME 레코드 설정
CF Pages의 커스텀 도메인은 CNAME 레코드로 연결됩니다.
CF Dashboard → DNS → Records → Add record에서 수동으로 추가할 수 있습니다.
| 타입 | Name | Target | Proxy |
|---|---|---|---|
| CNAME | @ (루트) |
<project>.pages.dev |
Proxied |
| CNAME | www |
<project>.pages.dev |
Proxied |
참고: 루트 도메인(
@)의 CNAME은 Cloudflare가 CNAME Flattening을 적용합니다. 일반 DNS에서는 루트에 CNAME을 설정할 수 없지만, Cloudflare DNS는 이 제약을 해결합니다.
외부 DNS(Route 53 등)를 사용하는 경우, CF Pages가 제공하는 TXT 레코드로 소유권을 먼저 검증한 뒤 CNAME을 추가합니다. 단, 외부 DNS에서는 Cloudflare 프록시 기능을 사용할 수 없으므로 Cloudflare DNS 사용을 권장합니다.
2-프로젝트 모델 도메인 구성
Modfolio 생태계에서 각 브랜드는 두 개의 독립 프로젝트로 분리됩니다.
| 프로젝트 | 도메인 | 역할 | 프레임워크 |
|---|---|---|---|
| 앱 | domain.com |
SaaS 애플리케이션 | SvelteKit / SolidStart 등 |
| 랜딩 | www.domain.com |
마케팅 랜딩 사이트 | Astro |
CF Pages 프로젝트 매핑
하나의 브랜드에 두 개의 CF Pages 프로젝트를 생성합니다.
# 앱 프로젝트
naviaca → naviaca.com
# 랜딩 프로젝트
naviaca-landing → www.naviaca.com
DNS 레코드 구성
# 앱 (naked 도메인)
@ CNAME naviaca.pages.dev (Proxied)
# 랜딩 (www 서브도메인)
www CNAME naviaca-landing.pages.dev (Proxied)
landing-first 모드인 앱은 naked 도메인 접속 시 www로 302 리다이렉트합니다 (naviaca.com → www.naviaca.com/home). 앱 서버 사이드 또는 CF Bulk Redirects로 처리합니다.
SSL/TLS 인증서
Cloudflare Pages에 커스텀 도메인을 연결하면 SSL/TLS 인증서가 자동으로 발급됩니다.
- 인증서 유형: Cloudflare Universal SSL (무료)
- 갱신: 자동 갱신 (만료 30일 전)
- 커버리지: 루트 도메인 +
*.domain.com와일드카드
별도의 인증서 구매나 수동 설치가 필요 없습니다. SSL 모드는 CF Dashboard → SSL/TLS → Overview에서 **Full (strict)**으로 설정하세요.
인프라 앱 도메인 설정
인프라 앱은 *.modfolio.io 서브도메인을 사용합니다. 2-프로젝트 모델은 적용하지 않습니다.
| 앱 | 도메인 | CF Pages 프로젝트 |
|---|---|---|
| modfolio-connect | login.modfolio.io |
modfolio-connect |
| modfolio-admin | admin.modfolio.io |
modfolio-admin |
| modfolio-dev | dev.modfolio.io |
modfolio-dev |
| modfolio-docs | docs.modfolio.io |
modfolio-docs |
| modfolio-on | on.modfolio.io |
modfolio-on |
DNS 레코드 구성
와일드카드(*) CNAME 대신 각 서브도메인별 개별 CNAME을 설정합니다.
# modfolio.io DNS 레코드
login CNAME modfolio-connect.pages.dev (Proxied)
admin CNAME modfolio-admin.pages.dev (Proxied)
dev CNAME modfolio-dev.pages.dev (Proxied)
docs CNAME modfolio-docs.pages.dev (Proxied)
on CNAME modfolio-on.pages.dev (Proxied)
참고: 와일드카드 CNAME(
* CNAME *.pages.dev)은 CF Pages에서 지원하지 않습니다. 각 서브도메인을 개별 CF Pages 프로젝트의 커스텀 도메인으로 등록해야 합니다.
도메인 검증 절차
커스텀 도메인을 추가한 뒤, Cloudflare가 도메인 소유권을 검증합니다.
검증 상태
| 상태 | 설명 |
|---|---|
| Initializing | 검증 시작 |
| Pending | DNS 전파 대기 중 |
| Active | 검증 완료, 도메인 활성화 |
| Error | DNS 설정 오류, 재설정 필요 |
검증 실패 시 확인 사항
- DNS 레코드가 올바른
<project>.pages.dev를 가리키는지 확인 - 다른 CF Pages/Workers 프로젝트에 동일 도메인이 등록되어 있지 않은지 확인
- DNS 전파에 최대 48시간 소요 가능 (Cloudflare DNS 사용 시 즉시)
- CAA 레코드가 인증서 발급을 차단하고 있지 않은지 확인 (
dig domain.com CAA +short)
다음 단계
- CF Pages 설정 – 프로젝트 생성과 빌드 설정
- 생태계 개요 – 전체 앱 도메인 맵