products/ironclad-website.md: 배포 표에 라우팅 방식 컬럼 추가.
production만 zone route 방식(custom_domain 대신 zone_name + /*)을 써서
기존 APISIX A record를 건드리지 않고 Cloudflare 엣지에서 Worker가
매칭 요청을 가로채는 구조. 전제 조건(crowdsec bouncer wildcard가
apex를 가로채지 않도록 *.ironclad.it.com/* 수정) 명시.
history/2026-04-21: 3차에 걸친 cutover 경로(DNS 충돌 → route 전환 →
crowdsec wildcard dot 누락 수정) + 현재 prod 상태 + 후속 정리 항목.
2026-04-21 Ironclad production cutover — apex 도메인 Worker 전환
2026-04-21
history
ironclad
website
cloudflare
production
crowdsec
요약
ironclad.it.com (apex) production이 이전 경로(Cloudflare → APISIX → Caddy 컨테이너, Stamp/Flux volume_shared) 에서 Cloudflare Worker ironclad-site (Next.js 16 + opennextjs-cloudflare) 로 전환됨. 고객이 보는 화면이 6주 묵은 영문 "Ironclad Corp — Managed Security Hosting" 에서 최신 한국어 "Ironclad — 올어라운드 호스팅 & 보안서비스" 로 즉시 교체.
진행 경로
1차 시도 — v2026.04.21 태그 push (실패)
deploy-production.yml 트리거, wrangler 빌드·업로드 성공
DNS 등록 단계에서 Cloudflare API 실패:
code: 100117
Hostname 'ironclad.it.com' already has externally managed DNS records (A, CNAME).
Either delete them, try a different hostname, or use the option
'override_existing_dns_record' to override.
원인: 기존 ironclad.it.com A 172.233.93.180 (Proxied) 레코드가 먼저 있어 custom_domain: true 등록 거부
openclaw/openclaw-agents.md volume_shared 모드 ironclad 관련 기록 정리
헤임달
중
Cloudflare DNS A record 변경 (172.233.93.180 → Cloudflare 기본)
kappa
낮음 (zone route 방식이라 origin 무관)
v2026.04.21 태그는 deploy-production.yml에서 실패로 남음 → 재태깅 불필요 (로컬에서 직접 배포 완료)
—
—
커밋
hosting/ironclad:
v2026.04.21 (태그, f736487) — Header dark nav 승격 시점
6f2e2cc fix(deploy): custom_domain → zone route로 전환 (DNS 충돌 회피)
Cloudflare API 변경: zone route c148ae77ebb74f20b61ecd71d0e86b77 pattern 업데이트 (wrangler 소스 외)
학습 포인트
apex 도메인에 custom_domain: true를 쓰려면 기존 DNS 레코드가 없어야 한다. Stamp/Flux 같이 기존 정적 배포 경로가 있는 도메인은 zone_name 기반 route 방식이 자연스럽다.
Cloudflare Worker Routes wildcard의 dot 누락은 apex까지 포괄. *example.com/* vs *.example.com/*는 전혀 다른 패턴. *example.com/*은 prefix wildcard로 apex 포함.
기존 wildcard route가 apex로 해석되면 "내가 새로 만든 route가 우선" 될 거라 기대하기 어렵다. Cloudflare는 specificity tie-breaker가 있지만 명확히 의도한 대로 동작하지 않음. 가장 안전한 건 wildcard pattern이 apex를 포함하지 않게 수정.
x-opennext: 1 헤더는 OpenNext가 서빙하고 있음을 확인하는 가장 빠른 시그널.