본문 바로가기

프로젝트_리프

Leaf 성장일지 #3 – 가비아 도메인을 AWS EC2에 연결하는 가장 깔끔한 방법

이번 작업은 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 설정 방법

  1. EC2 대시보드 → “Elastic IP” → “탄력적 IP 주소 할당”
  2. 생성 후, EC2 인스턴스에 연결
  3. 기존 퍼블릭 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) 적용 예정!