EC2 서버에 도메인 연결하고 https 적용하기
EC2 기반 웹서비스 HTTPS 적용 과정
이전에 Firebase 기반 인증을 사용하여 웹서비스를 EC2에서 구축하였으나,
- 구현 - 파이어베이스(firebase) 기반 인증
로컬 환경에서는 정상적으로 작동하던 인증 시스템이 서버 환경에서는 원활하게 동작하지 않았다. 문제를 분석한 결과, HTTPS 및 도메인 설정의 부재가 원인이라고 판단하였다. 이에 따라 가비아에서 도메인을 구매하고, EC2 웹서비스에 해당 도메인을 연결한 후 HTTPS를 설정하는 과정을 진행하였다. 아래는 그 과정의 상세 내용이다.
1. 새 EC2 인스턴스 설정
- SSH 접속 설정: EC2 인스턴스에 접근하기 위해 SSH 접속을 설정하였으며, 보안을 위해 키 페어 권한을
400으로 설정하였다. - PM2 설정 확인 및 실행: 애플리케이션 프로세스를 관리하기 위해 PM2를 설정하고 실행하였다.
ecosystem.config.js파일 생성 및 설정: PM2 클러스터 모드에서 애플리케이션을 실행할 수 있도록ecosystem.config.js파일을 생성하고 필요한 설정을 추가하였다.- 클러스터 모드 실행: 서버 성능을 극대화하기 위해 노드를 클러스터 모드로 실행하였다.
2. 도메인 연결 설정
- 가비아 도메인 설정: 가비아에서 도메인을 구매한 후, 해당 도메인을 EC2 인스턴스에 연결하기 위한 설정을 진행하였다.
- Route 53 설정: AWS Route 53을 이용해 호스팅 영역을 생성하고, DNS 설정을 관리하였다.
- 호스팅 영역 생성: Route 53에서 도메인의 호스팅 영역을 생성하였다.
- A 레코드 생성: 도메인과 EC2 인스턴스의 IP 주소를 연결하기 위해 A 레코드를 추가하였다.
- 탄력적 IP 할당 및 연결: EC2 인스턴스에 탄력적 IP를 할당하고 도메인과 연결하였다.
- 네임서버 설정 변경: 가비아 도메인 관리 페이지에서 네임서버를 AWS Route 53에서 제공하는 네임서버로 변경하였다.
3. Nginx 설정
- Nginx 설치 및 설정: EC2 인스턴스에 Nginx를 설치한 후, 서버와 도메인을 연결하기 위한 기본 설정을 완료하였다.
- 도메인 연결 설정 파일 수정: Nginx 설정 파일에서 도메인과의 연결을 위한 서버 블록을 수정하였다.
- 프록시 패스 설정: Nginx가 백엔드 Node.js 애플리케이션으로 요청을 전달하도록 프록시 패스를 설정하였다.
4. HTTPS 설정
- Let's Encrypt 인증서 발급: HTTPS를 적용하기 위해 Certbot을 사용하여 Let's Encrypt에서 SSL 인증서를 발급받았다.
- Nginx SSL 설정: 발급받은 SSL 인증서를 Nginx에 적용하고, HTTPS 요청을 처리할 수 있도록 설정을 수정하였다.
- 서브도메인(www) 추가: www 서브도메인에도 SSL 인증서를 적용하고, 해당 도메인으로의 접근을 가능하게 설정하였다.
- HTTPS 접속 확인: 브라우저를 통해 웹사이트가 HTTPS로 안전하게 접속되는지 확인하였다.
위 과정을 통해 로컬에서만 작동하던 Firebase 기반 인증 시스템을 서버 환경에서도 원활히 작동하도록 개선하였으며, HTTPS를 통해 보안이 강화된 웹서비스를 제공할 수 있었다.
댓글
첫 번째 댓글을 남겨보세요.