olrlobt
[INFRA] 가비아 도메인 구매 후 EC2 서버에 적용하기 본문
가비아 도메인 구매하기
EC2로 서버를 열어서 사용하다 보면, EC2에서 기본으로 제공하는 주소가 너무 길어서 불편함을 느낄 수밖에 없다. 특히 내 개인 토인 프로젝트의 경우, API 호출만 사용하는데 도메인 주소가 길다 보니 상당히 복잡해지고 불편했다.
### EC2에서 기본으로 제공하는 주소 형식
ec2-000-000-000-00.ap-northeast-2.compute.amazonaws.com
### API를 호출하면 엄청 길어진다.
https://ec2-000-000-000-00.ap-northeast-2.compute.amazonaws.com/api/fix?url=https://olrlobt.tistory.com/
### 현재 쓰고 있는 API 호출
https://blogwidget.com/api/fix?url=https://olrlobt.tistory.com/
따라서, 도메인을 구매하여 적용하게 되었다.
가비아는 IaaS형 클라우드, SaaS 그룹웨어 설루션 등 비즈니스에 필요한 IT 인프라 전반을 제공하는 경기도 판교 소재 클라우드 전문 기업이다. 국내 도메인 점유율 1위 기업으로, 처음 도메인을 등록해 보는 나로서 선택을 하지 않을 이유가 없었다.
도메인 구매하기
먼저 원하는 도메인을 검색한다.
이때, 도메인의 .com, .org, .kr 같은 최상위 도메인(TLD, Top-Level Domain)은 가격을 결정하는 중요한 요소이다. 특히 인지도가 높은.com, .org, .io 같은 경우 높은 가격이 책정되는데, 인지도와 신뢰성이 높기 때문이다. 만약 내 사이트가 blogwidget.store라면 뭔가 바이러스가 걸릴 것만 같지 않나? 따라서 나는 blogwidget.com을 구매하기로 했다.
원하는 도메인을 선택하고 구매를 진행한다. 크게 어려운 설정은 없고, 적당한 인증을 마치고 바로 결제를 진행하자.
결제가 완료되었다.
Route 53 설정
Amazon Route 53은 AWS(Amazon Web Services)에서 제공하는 클라우드 기반 DNS(Domain Name System) 웹 서비스이다. 이를 통해 사용자는 인터넷 도메인 이름을 웹 서버나 다른 AWS 리소스의 IP 주소와 매핑할 수 있다.
우리는 Route 53에 EC2 서버를 연결해 도메인을 사용할 것이다.
먼저 Route 53 대시보드에 접속해서 좌측 메뉴의 "호스팅 영역"에서 호스팅 영역을 생성해 주자.
호스팅 영역(Hosted Zone)은 특정 도메인과 해당 도메인에 대한 DNS 설정을 관리하는 컨테이너 역할을 하는 개념이다. 호스팅 영역을 통해 Amazon Route 53이 도메인 이름에 대한 트래픽을 어떻게 라우팅 할지 결정한다.
가비아에서 구매한 도메인 이름을 설정해 주고, 구분이 필요하다면 설명을 작성하여 생성해 주자.
Amazon Route 53의 호스팅 영역을 생성하면 DNS 트래픽을 특정 서버나 리소스로 라우팅 하기 위해 각 도메인에 대한 DNS 레코드를 추가할 수 있다.
호스팅을 생성하면, 기본적으로 2개의 레코드가 생성된다.
NS 레코드 (Name Server Record) : 도메인 이름의 호스팅 영역을 관리하는 네임서버, 해당 값은 가비아 설정에 사용된다.
SOA 레코드 (Start of Authority Record) : 해당 호스팅 영역의 시작 지점으로 DNS의 모든 호스팅 영역에는 단 하나의 SOA 레코드가 있다.
그리고 하나의 레코드를 더 생성해야 한다. 우측 상단의 레코드 생성을 통해 레코드를 생성하자.
여기서 서브 도메인 설정이 가능한데, 루트 도메인을 사용할 것이기 때문에 비워두었다.
레코드 유형은 A레코드로 설정한다.
A 레코드: example.com을 192.168.1.1이라는 IP 주소로 매핑하는 역할을 한다. 따라서 값에 EC2 퍼블릭 IPv4 주소를 입력해 주자.
가비아 설정
현재는 가비아에서 도메인을 구매하고 아무 설정을 안 했기 때문에, 도메인에 접속하면 가비아 도메인에 설정된 NS 서버로 IP 매핑이 일어나게 된다.
따라서 가비아 홈페이지를 통해 NS서버 설정을 해 주어야 한다.
먼저, 가비아에 접속하여 상단의 서비스 관리를 통해 도메인 관리로 들어간다.
여기서 도메인의 네임서버 설정이 가능한데, 기본적으로 가비아 설정해 놓은 서버로 설정이 되어 있다.
네임서버 설정을 눌러 네임서버를 수정해 준다.
만약 도메인에 대한 안전 잠금 해제가 안 되어 있다면, 본인인증을 마치고 잠금을 해제해 주자.
그럼 아래와 같이 네임서버 설정이 가능한데, 아까 Route 53에서 확인한 NS 서버의 4개의 값을 여기에 작성하면 된다.
네임서버가 잘 적용되면, 아래와 같이 적용이 된다.
이제 가비아의 네임서버를 변경해 주었기 때문에, 해당 도메인으로 모든 DNS 쿼리는 Route 53으로 전달된다. 그리고 Route 53에 설정한 A 레코드에 의해 EC2의 IP 주소로 사용자의 트래픽이 라우팅 되며, 정상적으로 서비스를 이용할 수 있게 되었다.
SSL/TLS 설정
당연하게도 SSH/TLS 설정도 다시 해 주어야 한다. 나는 Nginx를 사용하였기 때문에 아래와 같은 명령어로 진행하였다.
docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot -d blogwidget.com
이때, 아직 www.blogwidget.com에 대한 설정은 진행하지 않았기 때문에 아래와 같은 문제를 만날 수 있었다.
따라서, www가 붙은 도메인에 대한 것은 아직 진행하지 않고 SSL/TLS 설정을 진행하였다.
또한 nginx.conf를 아래와 같이 수정해 주었다.
server {
listen 80;
server_name blogwidget.com www.blogwidget.com;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name blogwidget.com www.blogwidget.com;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/blogwidget.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blogwidget.com/privkey.pem;
location / {
proxy_pass http://blogwidget.com:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
하위 도메인 설정하기
www가 붙지 않는다는 문제가 있어서, 추가로 하위 도메인도 설정을 진행하였다.
과정을 정말 간단하게, 앞서 진행했던 과정에서 레코드만 www를 설정하여 추가해 주었고, SSL/TLS 설정을 위와 같이 다시 진행해 주었다.
결과
도메인으로 정상적으로 접속이 가능해졌다.
'Infra' 카테고리의 다른 글
[INFRA] Blue/Green 무중단 배포(Zero Downtime Deployment) (0) | 2024.07.13 |
---|---|
[INFRA] Maven Central Repository에 Gradle Artifacts 배포하기 (3) | 2024.05.07 |
[INFRA] Jenkins 설치하기 (0) | 2024.03.30 |
[INFRA] AWS EC2 프리티어 인스턴스 생성하기 (2) | 2024.03.25 |
[INFRA] Docker에서 Nginx 컨테이너 실행과 https 설정하기 (1) | 2024.03.20 |