AWS EC2 + Nginx 를 통해서 Nextjs 서비스 배포하기
NextJS 서비스를 AWS를 통해 배포한다고 할 때, 가장 많이 사용 하는 방법 중 하나로 AWS 의 컴퓨팅 자원 중 하나인 Amazon EC2 (Amazon Elastic Compute Cloud)를 이용 하는 것 일 겁니다.
먼저, HTTP/HTTPS 를 통해서 웹서버(nginx) 에 접근을 할 예정 입니다. Nginx는 해당 트래픽을 NextJS 서비스에 리버스 프록시를 통해, 유저가 해당 서비스에 접근 할 수 있도록 합니다.
💡 NGINX 는 리버스 프록시, 캐싱, 로드 밸런싱을 위한 웹 서버 입니다
Nginx는 웹서버로서 로드밸런싱, 리벅스 프록시, 방화벽, 정적파일 전달, 캐싱 등의 역할을 하며 WAS 에게 많은 부하가 가지 않도록 합니다.
또한, 클라이언트 에서의 요청을 대신 받아서 서버로 전달 해주고, 서버에서의 응답을 대신 전달해주는 Reverse Proxy 역할을 할 수 있습니다.
이러한 리버스 프록시를 통해서 실제 서버로의 요청을 숨김 으로써 보안적으로 강화 할 수 있습니다.
이번 실습에는 Nginx의 리버스 프록시를 통해 443 및 80 포트 로의 접근을 NextJS 가 돌아가는 3000번 포트로 넘겨주는 리버스 프록시 기능을 사용 할 수 있도록 하겠습니다.
💡 EC2 란, 클라우드 컴퓨팅 서비스로, 컴퓨터 (서버) 를 임대해주는 서비스 (AWS 클라우드의 가상 서버)
- 서버를 쓸 만큼만 빌려 쓸 수 있고, 성능 및 운영체제 등을 선택 할 수 있습니다.
간단한 실습 및 비용 절감을 위해 Public Subnet 위에 EC2를 사용 하도록 하겠습니다.
먼저 AWS 에서 제공 해주는 Default VPC 를 이용해도 좋지만, 추후 관리를 위해서 VPC 및 서브넷 등의 설정 을 해야 합니다.
VPC 및 서브넷 등 설정 부터 실습 해보실 분은 링크 따라 읽어서 오시면 좋을 것 같습니다 😀
[AWS 시리즈] VPC 생성 및 구성 하기 실습 - Private Subnet, Public Subnet (1)
새 키페어 생성
버튼을 눌러 인스턴스에 접근 할 수 있도록 해주는 키 페어를 생성 합니다.Instance 접속을 위해 22번 포트
를 현재 내 IP 에서 접근 할 수 있도록 보안 그룹 설정을 해주고, HTTP 및 HTTPS 접근
을 위해 80 및 443 번
포트를 모든 IP
에서 접근 할 수 있도록 설정 해줍니다.
해당 설정으로 EC2 인스턴스를 생성 하면 Public 에서 접근 할 수 있는 IP 와 DNS 주소를 볼 수 있을 겁니다.
그럼 인스턴스 생성은 완료 되었습니다.
먼저 2가지 준비물을 챙깁시다.
먼저 터미널창을 열어서 아래와 같은 명령어를 작성합니다.
$ ssh -i "생성한 키페어.pem" ec2-user@"Public IP 및 DNS 주소"
ex) ssh -i "test-keypair-2024.pem" ec2-user@43.203.202.160
Amazon Linux 이외의 OS 로 인스턴스를 생성 하였으면 ec2-user
가 아닌 다른 user 아이디로 접속을 해야합니다.
AMI 종류 | 사용자 이름 |
---|---|
Amazon Linux 2 | ec2-user |
Amazon Linux AMI | ec2-user |
CentOS AMI | centos, ec2-user |
Debian AMI | admin |
Fedora AMI | fedora, ec2-user |
RHEL AMI | ec2-user, root |
SUSE AMI | ec2-user, root |
Ubuntu AMI | ubuntu |
Oracle AMI | ec2-user |
Bitnami AMI | bitnami |
명령어를 통해서 Instance에 접속을 했으면 아래와 같은 화면을 볼 수 있을 겁니다.