공부/추가공부

서브도메인

sesam 2025. 12. 2. 00:52
728x90
서브도메인이 뭐야?

ChatGPT의 말:

 
22s 동안 생각함

아까 쿠키 물어본 거 이어서 같이 답해줄게 👀


1. 쿠키는 같은 호스트끼리만 되냐?

기본적으로는 “같은 호스트(도메인)”에서만 쓸 수 있어.
여기서 말하는 호스트는 대략 브라우저 주소창에 찍혀 있는 aaa.bbb.com 이 부분이라고 보면 됨.

1) 기본 규칙 (Host-only 쿠키)

쿠키를 그냥 세팅하면(예: Set-Cookie: token=123;)
👉 그 쿠키는 그 값을 내려준 “정확한 호스트”에서만 보임

예를 들어:

  • 서버: api.example.com
  • 여기서 쿠키를 세팅하면
    → api.example.com 에서만 그 쿠키가 자동으로 실림
    → www.example.com / admin.example.com 에서는 안 보임

이게 host-only 쿠키.


2) 서브도메인까지 공유하고 싶으면?

Domain 속성을 줘서 도메인 범위를 넓힐 수 있어.

예:

 
Set-Cookie: token=123; Domain=.example.com; Path=/;

이렇게 하면 이 쿠키는:

  • example.com
  • www.example.com
  • api.example.com
  • anything.example.com

이런 모든 서브도메인에서 다 보임.

하지만 완전 다른 도메인이랑은 절대 공유 안 됨:

  • example.com 쿠키 → other.com 에서는 불가능 ❌
  • a.naver.com 쿠키 → b.daum.net 에서는 불가능 ❌

또 .com, .co.kr 같이 최상위/공용 도메인에는 아예 쿠키 설정 자체를 못 함.


2. 서브도메인이 뭐야?

도메인은 계층 구조로 되어 있는데, 예를 들어:

  • example.com → 이게 기본 도메인(루트 도메인)
  • www.example.com
  • api.example.com
  • m.example.com

여기서 www, api, m 이런 앞부분이 서브도메인(subdomain) 이라고 보면 됨.

조금 더 쪼개보면:

  • api.example.com
    • com : 최상위 도메인(TLD)
    • example.com : 루트 도메인 / 등록 도메인
    • api.example.com : example.com 의 서브도메인

우리나라식 도메인(예: example.co.kr)도 마찬가지야:

  • 루트 도메인: example.co.kr
  • 서브도메인: lab.example.co.kr, mail.example.co.kr 이런 것들

3. 정리 한 번만 깔끔하게

  • 쿠키는 기본적으로 “정확히 같은 호스트”에서만 자동 전송됨.
  • 서브도메인끼리도 쿠키를 공유하고 싶으면
    → Domain=.example.com 처럼 Domain 속성을 줘야 함.
  • 서브도메인은
    → api.example.com 에서 api 같은 앞부분을 말하는 거고
    → example.com 을 기준으로 그 앞에 붙는 애들.

만약 지금 코드/상황(예: api.xxx.com 에서 쿠키 심었는데 www.xxx.com에서 안 보인다 이런 거) 있으면, 그 코드 그대로 가져오면 어떻게 바꿔야 할지 딱 짚어줄게 😎

나의 말:

서브도메인이라고 하면 그냥 내가 도메인을 따로 하나더 사는거지?

ChatGPT의 말:

좋은 질문이야 👍 완전 새로운 도메인을 “사는 것”과 서브도메인을 만드는 것은 다르다.


🧩 1. 도메인 vs 서브도메인 차이

구분설명예시
도메인 돈 주고 직접 등록하는 주소 example.com, mybrand.co.kr
서브도메인 이미 가진 도메인에 “접두어”를 붙여서 만드는 하위 주소 api.example.com, shop.mybrand.co.kr

즉, 서브도메인은 **기존 도메인 안에서 무료로 무한히 만들 수 있는 “하위 주소”**야.
새 도메인을 따로 사는 게 아니라, DNS 설정으로 추가하는 거야.


🛠️ 2. 서브도메인 만드는 법 (개념적으로)

  1. 네가 이미 example.com을 가지고 있다고 치면,
  2. DNS 관리 페이지(도메인 구입한 곳에서) 들어가서
    api.example.com 이라는 A레코드나 CNAME 레코드를 추가해.
  3. 그걸 특정 서버 IP나 다른 도메인으로 연결하면 끝.

👉 예시:

 
Type: A Name: api Value: 123.45.67.89

이러면 api.example.com이 그 IP 서버로 연결돼.


💡 3. 정리하자면

  • 서브도메인은 새 도메인 “구매”가 아님.
  • 이미 있는 도메인(example.com)의 하위 주소를 DNS 레코드로 직접 만드는 것.
  • api, shop, dev, test 같은 이름을 붙여 여러 개 만들어도 추가 요금 없음.

원하면 실제 예시로
👉 “내가 구입한 도메인이 myservice.kr인데, 백엔드는 api.myservice.kr, 프론트는 app.myservice.kr로 나누고 싶다”
이런 상황 기준으로 DNS 설정 예시를 보여줄 수도 있어.
그걸로 쿠키 공유나 HTTPS 설정도 같이 설명해줄까?

나의 말:

내가 서브도메인으로 api.example.com을 등록하지 않았고 example.com만 메인도메인으로 가지고 있어. 누군가가 api.example.com을 가지고 싶으면 가질 수 있어 ?

ChatGPT의 말:

오케이, 요 포인트 헷갈릴 수 있는데 딱 잘 짚은 질문이야 👍

결론부터 말하면:
👉 네가 example.com을 가지고 있는 이상, 남이 api.example.com을 따로 “소유”할 수는 없어.


1. 왜 남이 api.example.com을 못 가지냐?

도메인 구조가 이렇게 되어 있어서 그래:

  • 너가 돈 내고 산 건: example.com (이게 등록 도메인)
  • api.example.com, www.example.com, dev.example.com 이런 건
    → 다 example.com의 서브도메인이라서
    전부 example.com 소유자의 권한 아래 있음.

DNS 관점에서 보면:

  1. 전 세계 도메인 서버들은
    “example.com 관련된 건 다 이 네임서버로 가세요~” 하고
    네가 설정한 네임서버로 보내줌.
  2. api.example.com을 누가 요청해도,
    결국 네가 설정한 네임서버한테 묻게 되어 있음.
  3. 그 네임서버에서 api.example.com 레코드를 안 만들어 두면
    → 그냥 “없는 주소(NXDOMAIN)”가 될 뿐,
    남이 거길 따로 등록해서 쓰는 구조는 아님.

즉,

  • example.com = 돈 내고 산 땅
  • api.example.com = 그 땅 안에 네가 마음대로 쪼개서 쓰는 구획
    이런 느낌이라고 보면 됨.

2. 그럼 서브도메인은 누가 만들 수 있어?

오직 example.com 소유자(또는 DNS 관리 권한 가진 사람) 만:

  • api.example.com
  • dev.example.com
  • lab.example.com

같은 서브도메인을 DNS에 추가할 수 있어.

그 방법도 그냥:

  • 도메인 구입한 곳 / DNS 관리 콘솔 들어가서
    Name: api 로 A 레코드/CNAME 레코드 추가하면 끝.

남이 가질 수 있는 건 전혀 아니고,
네가 안 만들면 “없는 주소”일 뿐, “남의 주소”가 되진 않아.


3. 예외처럼 보일 수 있는 케이스 하나

가끔 이런 게 있어서 헷갈릴 수 있어:

  • 예: username.github.io, xxx.notion.site, ooovvver.vercel.app 같은 것들
    → 이건 GitHub / Notion / Vercel 이라는 회사가
    자기 도메인(github.io, notion.site, vercel.app)을 가진 상태에서
    서브도메인을 서비스로 나눠서 사람들한테 “빌려주는” 것이야.

여기서는 네가 myname.github.io를 쓰지만,
실제 도메인 소유자는 GitHub 이고,
우리는 단지 “호스팅해 주는 서브도메인”을 쓰는 입장일 뿐.

네 질문은:

내가 example.com을 가지고 있는 상태에서
내가 api.example.com을 등록 안 했어도
남이 api.example.com을 가져갈 수 있냐?

이니까,
👉 아니오. 절대 못 가져간다.
너만 만들 수 있음.


4. 한 줄 정리 ✍️

  • 도메인은 돈 주고 사는 거 (example.com).
  • 서브도메인은 그 도메인 소유자가 마음대로 쪼개서 쓰는 거 (api.example.com).
  • 너가 example.com을 가진 이상,
    다른 사람은 api.example.com을 “소유”할 수 없다.

혹시 지금 실서비스 도메인 가지고 있는 거면,
“프론트/백 분리 + 서브도메인 + 쿠키 공유”까지 한 번에 설계해줄까?
예시로 app.example.com + api.example.com 구조로 쿠키/인증 설계도 같이 짜줄 수 있어 😎

나의 말:

그럼 example.api.com 이거는 다른 사람이 가질 수 있어?

ChatGPT의 말:

오 이거 감 좋다, 딱 헷갈리기 좋은 케이스 물어봤네 😂

내가 example.com 가지고 있을 때
example.api.com은 다른 사람이 가질 수 있어?

👉 응, 그건 “다른 사람”이 가질 수 있어.
왜냐면 example.api.com은 api.com의 서브도메인이거든.
네가 가진 건 example.com이고, 이 둘은 완전히 별개의 도메인이야.


도메인 구조로 보면

  • example.com → 네가 가진 도메인
  • api.com → 또 다른 사람/회사/누군가가 가지고 있을 수 있는 도메인
  • example.api.com → api.com의 서브도메인

즉,

  • example.com의 서브도메인:
    • api.example.com ✅ (이건 너만 만들 수 있음)
  • api.com의 서브도메인:
    • example.api.com ✅ (이건 api.com 주인이 만들 수 있음)

네가 example.com을 가지고 있다고 해서
api.com 아래에 뭐가 생기는지에 대해서는 아무 권한이 없음.


핵심만 한 줄로 요약하면

  • 쿠키/소유권/서브도메인 권한은 “오른쪽에서부터 정해지는 등록 도메인” 기준이다.
  • example.com과 api.com은 서로 남남.
  • 그래서:
    • api.example.com → 너만 만듦
    • example.api.com → api.com 주인만 만듦

더 궁금한 거:

  • a.b.example.com 이런 식으로 서브도메인 여러 단계로 쌓였을 때 권한/쿠키 범위
  • co.kr, or.kr 같은 애들에서 기준이 어디냐
728x90