개요
이전 포스트에서 EC2 서버에 GithubActions를 통한 배포를 했다.
이제 도메인과 연결하면 배포는 끝이다.
AWS 도메인 생성
도메인을 생성하는 방법은 여러가지가 있다.
나는 AWS의 Route 53을 활용해 도메인을 생성했다.
Route 53에 접속 후 좌측의 등록된 도메인 탭에 가면 도메인 등록 버튼이 있다.
원하는 도메인을 검색하고, 결제 진행 버튼을 누르면 자동 활성 옵션과 기간을 설정해 결제를 진행할 수 있다.
결제가 완료되면 Route 53 대시보드에서 DNS를 확인할 수 있다.
도메인의 실제 등록은 꽤 걸릴 수 있으니 기다리면 된다.
인증서 발급
HTTPS를 사용하기 위해 인증서를 발급하자.
Certificate Manager로 이동하여 인증서 요청을 누른다.
발급받은 도메인 이름을 넣어주고, Route 53에서 구매한 경우 DNS 검증을 해주면 된다.
도메인 소유권 검증
인증서를 클릭해주면 아래와 같은 화면이 나온다.
도메인에 대한 소유권이 있는 지 검증하는 과정으로 Route 53에서 레코드 생성 버튼을 클릭한다.
Route 53을 통해 도메인을 구매했기 때문에 자동으로 설정이 되어 바로 생성 버튼을 누르면 된다.
Target Group 생성
로드밸런서를 사용하기 위해 요청을 분산시킬 그룹이 필요하다.
생성한 EC2 인스턴스들이 들어갈 그룹이며 로드밸런서가 그룹별로 요청을 분산시켜 준다.
EC2에 접속하여 좌측의 로드밸런싱의 대상 그룹에 들어간다.
대상 그룹 생성을 클릭하면 위와 같은 화면이 나타난다.
기본 포트번호는 80으로 되어있고 각자의 서비스에 따라 포트번호를 변경해주면 된다.
다음 버튼을 누르면 위와 같은 대상 등록 화면이 나타난다.
그룹에 포함할 인스턴스를 선택 후 아래에 보류 중인 것으로 포함 버튼을 눌러주면 된다.
인스턴스가 한 대이기 때문에 로드밸런싱이 의미없지만, HTTPS 프로토콜 적용을 위한 작업이다.
로드밸런서
우선 로드 밸런서를 간단하게 설명하자면 여러 서버가 띄워져 있을 때 클라이언트로부터 오는 요청을 로드 밸런서에서 모두 받고, 각 서버에 분배해주는 서버를 의미한다.
로드밸런서를 만들어보자.
EC2의 로드밸런서 탭에 가서 로드 밸런서 생성 버튼을 누른다.
위와 같은 화면이 나오는데 Application Load Balancer를 선택해주면 된다.
이후 이름을 제외하고 나머지는 기본 설정으로 해주면 된다.
가용영역을 선택하고, 보안 그룹을 선택한다.
가용영역 설정 시 인스턴스의 가용 영역을 포함시켜야 한다.
보안 그룹은 EC2 인스턴스의 보안 그룹과 같은 보안 그룹을 설정해도 되고 별도로 만들어 사용해도 된다. (별도로 만든다면 EC2 보안그룹에 ALB의 보안 그룹을 추가해주어야 한다.)
HTTP와 HTTPS 프로토콜 리스너를 지정한다. 리스너를 하나 추가해야 한다.
위에서 생성한 대상 그룹을 지정해주면 된다.
그리고 위에서 생성한 인증서도 선택해주고, 로드밸런서를 생성해주면 된다.
로드밸런서와 도메인 연결
Route 53의 호스팅 영역탭에 가보면 구매한 도메인이 있다. 그 도메인을 클릭하고 레코드 생성을 클릭한다.
별칭을 클릭하여 트래픽 라우팅 대상을 지정한다.
위에서 만든 로드밸런서를 지정해주면 된다.
정리
위 작업을 마치면 정상적으로 도메인이 연결되고 HTTPS 설정이 된 것을 볼 수 있다.
추가적으로 HTTP -> HTTPS 리다이렉션 적용을 할 수 있다.
로드밸런서의 리스너 및 규칙에서 HTTP를 아래와 같이 수정해주면 된다.
1
HTTPS://#{host}:443/#{path}?#{query}
AWS에서 지원하는 기능으로 HTTP -> HTTPS 리다이렉트 방법이다.
이후 Nginx 설정 파일의 server_name을 수정하고 Nginx를 재시작해주면 도메인인을 통해 개발한 페이지에 접속할 수 있다.