프로젝트_리프
Leaf 성장일지 #3 – 가비아 도메인을 AWS EC2에 연결하는 가장 깔끔한 방법
홍옹
2025. 7. 12. 20:54
이번 작업은 Leaf 프로젝트의 개발 서버에 도메인을 연결하는 작업이었습니다.
지금까지는 IP 주소와 포트 번호로 접속했지만, 더 이상
http://ec2-xx-xx-xx-xx.ap-northeast-2.compute.amazonaws.com:3000
이런 주소는 보기 싫었거든요…!
이제는 내가 원하는 도메인으로 접근할 수 있도록,
가비아에서 구매한 도메인을 EC2와 연결하는 작업을 진행했습니다.
1. 도메인 구매 및 Elastic IP 설정
- 도메인은 가비아(Gabia) 에서 구매
- EC2는 이미 구성 완료 (Ubuntu 22.04 + Docker + nginx)
- EC2의 퍼블릭 IP가 재시작 시 변경되는 문제가 있어, Elastic IP로 고정
Elastic IP 설정 방법
- EC2 대시보드 → “Elastic IP” → “탄력적 IP 주소 할당”
- 생성 후, EC2 인스턴스에 연결
- 기존 퍼블릭 IP는 반납
2. 가비아 DNS 설정 – A 레코드 등록
가비아 도메인 관리 → DNS 관리 → 호스트 IP 관리 (A 레코드)
호스트명타입값
| @ | A | <Elastic IP 주소> |
| www | A | <Elastic IP 주소> |
- @는 root domain
- www는 www.도메인.com을 위한 설정
적용까지 5분~최대 1시간 정도 DNS 전파 지연 있음
3. Nginx 리버스 프록시 설정
Leaf의 FE는 포트 3000에서 동작 중이었기 때문에,
nginx로 포트를 감추고 도메인으로 리다이렉트하는 작업을 수행했어요.
# /etc/nginx/sites-available/leaf.conf
server {
listen 80;
server_name leafchat.kr www.leafchat.kr;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# 심볼릭 링크 연결 및 Nginx 재시작
sudo ln -s /etc/nginx/sites-available/leaf.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
4. 보안 그룹 확인
- EC2 인스턴스의 보안 그룹에서 80번 포트 (HTTP) 허용 필수
- 필요 시 HTTPS(443)도 미리 열어두기
text
복사편집
인바운드 규칙 추가: - 타입: HTTP, 포트: 80, 소스: 0.0.0.0/0
5. 접속 테스트
- 정상적으로 Leaf 프론트엔드가 렌더링되는지 확인
- 브라우저에서 직접 접속도 가능
🧪 시행착오
- 문제 1: DNS 적용 지연
→ 설정은 다 했는데 도메인이 접속 안됨
→ 최대 1시간 소요됨 (가비아 캐시 + DNS 전파 지연) - 문제 2: nginx 기본 설정으로 포트 노출됨
→ /etc/nginx/sites-enabled/default 설정 파일이 겹침
→ default 설정 삭제하고 새 conf 파일로 대체 - 문제 3: 도커 컨테이너 내부 포트 연결 안됨
→ nginx는 호스트 기준 localhost:3000으로 접근해야 함
→ proxy_pass http://localhost:3000; 로 설정해야 정상 작동
🎯 마무리
이번 도메인 연결 작업을 통해 Leaf는
IP 주소 대신 정식 도메인 주소로 서비스를 공유할 수 있게 되었습니다.
사이드 프로젝트라 하더라도,
도메인 설정 → nginx 연동 → 포트 감추기 → 접속 테스트
이 흐름을 한 번 겪어보는 건 매우 의미 있는 경험이었어요.
🤔 돌아보며
- 도메인 연결은 생각보다 간단하지만, DNS 전파나 nginx 설정 충돌 같은 문제를 겪을 수 있다.
- 가비아의 DNS 설정은 Route 53 없이도 충분히 유용했다.
- SSL 적용은 아직 안 했지만, 다음 작업으로 Let's Encrypt(certbot) 적용 예정!