Debugging/2026.05.04/7 min read

서브도메인은 연결됐는데 /admin이 404였던 이유

blog, ad, nacho 서브도메인을 나누는 과정에서 Vercel 404와 앱 내부 라우팅 문제를 구분해 해결한 기록입니다.

SubdomainRouting404

Code notes

코드에서 확인한 구현 포인트

배포 기준 2026.05.04

관련 파일

apps/web/proxy.tsapps/web/app/admin/page.tsxapps/web/app/advertiser/page.tsxapps/web/app/blog/page.tsx

구현 메모

Vercel 기본 도메인에서 /admin이 열리는지 먼저 확인해 앱 경로 문제와 도메인 문제를 분리했다.

host 기반 rewrite로 nacho, ad, blog 서브도메인을 각각 내부 경로에 연결했다.

서브도메인 추가 후에는 Vercel Domains 설정과 앱 라우팅을 같이 검증했다.

404가 어디서 난 것인지부터 나누기

배포 후 /admin에 들어갔을 때 404가 보이면 두 가지 가능성이 있다. Vercel이 해당 배포나 프로젝트를 못 찾는 404일 수도 있고, Next.js 앱 안에서 해당 경로가 없는 404일 수도 있다.

Tangly에서는 Root Directory 설정이 맞지 않았던 시점의 404와, 서브도메인 라우팅을 나누는 과정의 404가 서로 섞여 보였다. 그래서 먼저 Vercel 기본 도메인에서 /admin이 되는지 확인했다.

기준 도메인으로 좁히기

Vercel 기본 도메인에서 /admin이 동작하면 앱 자체에는 관리자 페이지가 있다는 뜻이다. 그렇다면 문제는 커스텀 도메인, 서브도메인, 또는 host 기반 rewrite 쪽으로 좁혀진다.

반대로 기본 도메인에서도 404라면 도메인을 만질 일이 아니다. 빌드된 앱에 실제 경로가 포함되었는지, Root Directory와 배포된 커밋이 맞는지부터 봐야 한다.

서브도메인을 역할별 입구로 쓰기

최종적으로 nacho.tangly.kr은 관리자, ad.tangly.kr은 광고주 포털, blog.tangly.kr은 블로그로 쓰는 방향을 잡았다. 같은 Next.js 앱 안에서 host를 보고 내부 경로로 보내는 방식이다.

이 구조는 프로젝트를 여러 개로 쪼개지 않고도 외부에 보이는 입구를 역할별로 분리할 수 있다. 다만 도메인을 추가할 때마다 Vercel 도메인 설정과 앱 라우팅을 같이 확인해야 한다.

Keep reading

다른 글 이어서 보기

전체 글 보기