알토르 4주차 추가 과제 -1
Mission
- 도메인을 하나 구매 해보기
- 구매한 도메인을 vercel 연동
- DNS가 무엇인지, 네임서버가 무엇인지, 레코드가 무엇인지(A레코드 ..)
- AWS 가입, AWS같은 클라우딩 서비스가 무엇인지
- AWS EC2 서비스 무료버전 설치
- ubuntu OS 사용
- NginX가 무엇인지 찾아보기
- ubuntu에 nginx 설치 하고
- aws ec2 ip를 브라우저에 입력 했을 때 welcome to nginx화면이 보이게 하기
1. DNS
- 정의 : 컴퓨터가 이해할 수 있는 숫자로 된 IP 주소와 사람이 기억하기 쉬운 문자로 매핑한 도메인 이름을 변환시켜주는 인터넷의 전화번호부 시스템
2. Name Server
- 정의 : DNS 정보를 가지고 있는 서버
- 역할 : 도메인 이름과 IP 주소가 매핑된 정보를 관리
- 종류 :
1. 권한 있는 네임서버(Authoritative NS)- 재귀적 네임서버(Recursive NS)
3. Record
- 정의 : 도메인 관련 구체적인 정보 담고 있는 DNS 데이터 항목
| A 레코드 | IPv4 주소 | 도메인 → IPv4 매핑 |
| AAAA 레코드 | IPv6 주소 | 도메인 → IPv6 매핑 |
| CNAME | 별칭 | 도메인을 다른 도메인으로 연결 (ex: www.example.com → example.com) |
| MX 레코드 | 메일 교환 | 이메일 서버 지정 |
| NS 레코드 | 네임서버 지정 | 어떤 NS가 도메인을 관리하는지 지정 |
| TXT 레코드 | 텍스트 정보 | SPF, DKIM 등 이메일 인증, 기타 설명 |
| PTR 레코드 | 역방향 조회 | IP → 도메인 매핑 |
EX)
example.com
A 192.0.2.1
AAAA 2001:db8::1
MX mail.example.com
NS ns1.example.com
- 기본 원칙
- CNAME은 다른 레코드(A, AAAA 등)와 동시에 같은 이름에는 못 씀
- www.example.com에 A 레코드와 CNAME을 동시에 쓰면 오류 발생 - CNAME 레코드는 별칭 이름에만 적음
- 실제 IP를 가진 루트 도메인(example.com)에는 쓰지 않는 것이 일반적 - CNAME 값은 항상 “다른 도메인 이름”을 가리킴
예: www.example.com → example.com
www.example.com
CNAME example.com
- 서브도메인
1️⃣ 서브도메인(Subdomain)이란?
- 정의: 루트 도메인(example.com) 아래에 위치한 하위 도메인
- 형식: 서브도메인.루트도메인
- 예시:
www.example.com → 웹사이트용 서브도메인
mail.example.com → 메일 서버용 서브도메인
blog.example.com → 블로그용 서브도메인
💡 핵심: 서브도메인은 루트 도메인의 일부 이름으로, 독립적인 A, CNAME, MX 레코드를 가질 수 있음.
2️⃣ 루트 도메인과 서브도메인 레코드
- 루트 도메인(Apex Domain): example.com
직접 A/AAAA 레코드를 가짐 - 서브도메인: www.example.com, mail.example.com 등
- 루트 도메인과 같은 파일에 적어도 됨 (보통 BIND zone 파일 하나에 포함)
- 별도의 zone 파일로도 관리 가능 (규모가 크면 분리) - 예시 zone 파일(BIND 기준):
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2025090901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
; 네임서버
IN NS ns1.example.com.
IN NS ns2.example.com.
; 루트 도메인 레코드
@ IN A 192.0.2.1
@ IN AAAA 2001:db8::1
@ IN MX 10 mail.example.com.
; 서브도메인 레코드
www IN CNAME @
mail IN A 192.0.2.2
blog IN CNAME cms.example.com.
- @ → 루트 도메인(example.com)을 의미
- www → www.example.com
- CNAME에서 @를 쓰면 “루트 도메인 가리킴”이라는 뜻
3️⃣ 파일 이름
- BIND 등에서 zone 파일이라고 부름
- 일반적으로 파일 이름: db.example.com, example.com.zone 등
- OS나 DNS 서버 설정에 따라 경로가 달라짐:
- 리눅스 BIND: /etc/bind/zones/db.example.com CentOS/Rocky Linux: /var/named/example.com.zone
- 루트도메인/서브도메인 구분
1️⃣ 통일된 도메인 아래 서비스 관리
- 루트 도메인(example.com)을 중심으로
여러 서비스(www, api, mail)를 같은 브랜드/도메인 이름 아래 묶음 - 장점:
- 브랜드 통일성
- example.com을 기반으로 여러 서비스를 쉽게 파악
- URL 구조가 깔끔함: www.example.com, api.example.com
- 인증서 관리 용이
- SSL/TLS 인증서에서 와일드카드(*.example.com) 적용 가능
- DNS/인프라 관리 효율
- 한 루트 도메인 아래에서 레코드, 로드밸런서, 방화벽 등 관리 가능
- 서비스 분리와 유연성
- 서버, 클라우드 계정, 기술 스택이 달라도 통일된 도메인으로 연결 가능
2️⃣ 실제 사례
도메인역할서버/클라우드| example.com | 루트 웹 | EC2 or S3 |
| www.example.com | 웹사이트 | 동일 서버 or LB 뒤 |
| api.example.com | API | EKS, Lambda 등 |
| mail.example.com | 메일 서비스 | 전용 메일 서버 |
| blog.example.com | 블로그 | WordPress 서버 |
결과: 사용자 관점에서는 모두 “example.com 브랜드” 안의 서비스처럼 보이지만, 내부적으로는 서로 다른 서버/서비스 운영 가능
3️⃣ 정리
- 서브도메인은 서비스 단위 분리 + 통일된 브랜드/도메인 목적
- 단일 도메인(Apex)만 쓰면 서비스 구분 어려움
- DNS, SSL, 로드밸런서 등 인프라 관리도 훨씬 유연해짐
- 와일드카드
1️⃣ 와일드카드 개념
- 정의: 특정 문자나 이름 대신 모든 하위 도메인을 대표하는 특별한 기호(*)
- 표현: *.example.com
- 의미: example.com의 모든 서브도메인(예: www.example.com, api.example.com, blog.example.com)을 동시 지정 가능
- SSL/TLS 인증서에서 많이 사용
2️⃣ DNS에서 와일드카드 사용 예시
*.example.com IN A 192.0.2.1
- 의미: example.com의 모든 서브도메인이 192.0.2.1로 연결
- 장점:
서브도메인별로 A 레코드 작성 필요 없음
신규 서브도메인을 추가해도 자동 적용 - 단점:
특정 서브도메인을 다른 서버로 연결하려면 개별 레코드 우선
api.example.com만 다른 서버 → api.example.com A 192.0.2.2
- 와일드카드 레코드보다 우선 적용됨
3️⃣ SSL/TLS 와일드카드 인증서
예: *.example.com 인증서
www.example.com ✅
api.example.com ✅
blog.example.com ✅
example.com ❌ (루트 도메인은 포함 안 됨 → 별도 인증서 필요)
- 장점: 모든 서브도메인 SSL 인증서 한 번에 적용 가능 → 관리 편리
💡 정리
- 와일드카드(*) = 모든 서브도메인을 대표
- DNS 레코드나 SSL 인증서에서 많이 활용
- 개별 레코드가 와일드카드보다 우선
동일 IP / 다른 서비스
1️⃣ 1 IP → 여러 서비스 연결 문제
상황:
192.0.2.1 IP
www.example.com → 웹사이트
blog.example.com → 블로그
api.example.com → API
모든 서브도메인이 동일 IP를 지정
서버 입장 - 어떤 서비스 요청인지 구분 필요
2️⃣ 해결 방법
(1) 웹서버 가상호스팅(Virtual Hosting)
- 정의: 하나의 서버(IP)에서 도메인 이름 기반으로 요청 분기
- 방법: 웹서버에서 호스트 이름(Host Header) 확인 후 서비스 분기
server {
listen 80;
server_name www.example.com;
root /var/www/html;
}
server {
listen 80;
server_name blog.example.com;
root /var/www/blog;
}
server {
listen 80;
server_name api.example.com;
root /var/www/api;
}
- 클라이언트 요청:
www.example.com → /var/www/html
blog.example.com → /var/www/blog
api.example.com → /var/www/api
- 💡 장점: IP 하나로 여러 웹 서비스 제공 가능
- 💡 단점: 웹서버 기반 서비스에만 적용 가능 (HTTP/HTTPS)
(2) 포트 기반 분리
- 방법: 동일 서버/동일 IP라도 포트 번호로 서비스 구분
www.example.com:80 → 웹사이트
api.example.com:8080 → API
blog.example.com:8000 → 블로그
- 장점: 단순하고 웹 아닌 서비스에도 사용 가능
- 단점: URL에 포트번호가 노출됨 → 사용성 떨어짐
(3) 로드밸런서/리버스 프록시
- 클라우드 환경에서 자주 사용
- IP는 로드밸런서/프록시 1개
- 서비스 요청에 따라 백엔드 서버로 분기
www.example.com/* → EC2 웹 서버
api.example.com/* → EKS API 서버
3️⃣ 정리
방법장점단점| 도메인 기반 가상호스팅 | IP 1개로 여러 웹 서비스 | 웹서버 기반 서비스에 한정 |
| 포트 기반 분리 | 단순, 웹 아닌 서비스 가능 | 포트번호 URL 노출 |
| 로드밸런서/리버스 프록시 | 클라우드/대규모 서비스에 적합, SSL 통합 가능 | 추가 인프라 필요 |
Vercel DNS -> Domain 연동




'알토르' 카테고리의 다른 글
| 알토르 4주차 과제 - 2 (0) | 2026.05.16 |
|---|---|
| 알토르 4주차 추가 (0) | 2026.05.16 |
| Assistant + Retrieval 기반으로 바꾸기 - code (0) | 2026.05.14 |
| 알토르 3주차 - Browser Storage (0) | 2026.05.13 |
| OpenAI Assistant (0) | 2026.05.12 |