[AWS 실습] EC2 NGINX로 NextJS 배포하기 (1) - EC2 생성 하기

Jaewoong2·2024년 9월 1일
1

aws

목록 보기
8/10
post-thumbnail

EC2 로 배포하기 [실습]

AWS EC2 생성 및 터미널로 접근 하기

AWS EC2 + Nginx 를 통해서 Nextjs 서비스 배포하기

NextJS 서비스를 AWS를 통해 배포한다고 할 때, 가장 많이 사용 하는 방법 중 하나로 AWS 의 컴퓨팅 자원 중 하나인 Amazon EC2 (Amazon Elastic Compute Cloud)를 이용 하는 것 일 겁니다.

구성도

먼저, HTTP/HTTPS 를 통해서 웹서버(nginx) 에 접근을 할 예정 입니다. Nginx는 해당 트래픽을 NextJS 서비스에 리버스 프록시를 통해, 유저가 해당 서비스에 접근 할 수 있도록 합니다.

Ngnix

💡 NGINX 는 리버스 프록시, 캐싱, 로드 밸런싱을 위한 웹 서버 입니다

Nginx는 웹서버로서 로드밸런싱, 리벅스 프록시, 방화벽, 정적파일 전달, 캐싱 등의 역할을 하며 WAS 에게 많은 부하가 가지 않도록 합니다.

또한, 클라이언트 에서의 요청을 대신 받아서 서버로 전달 해주고, 서버에서의 응답을 대신 전달해주는 Reverse Proxy 역할을 할 수 있습니다.

이러한 리버스 프록시를 통해서 실제 서버로의 요청을 숨김 으로써 보안적으로 강화 할 수 있습니다.

  • <Nginx 에서 서버로의 요청은 클라이언트에서 알 수 없기 때문에>

이번 실습에는 Nginx의 리버스 프록시를 통해 443 및 80 포트 로의 접근을 NextJS 가 돌아가는 3000번 포트로 넘겨주는 리버스 프록시 기능을 사용 할 수 있도록 하겠습니다.

AWS Public Subnet & EC2

💡 EC2 란, 클라우드 컴퓨팅 서비스로, 컴퓨터 (서버) 를 임대해주는 서비스 (AWS 클라우드의 가상 서버)

  • 서버를 쓸 만큼만 빌려 쓸 수 있고, 성능 및 운영체제 등을 선택 할 수 있습니다.

간단한 실습 및 비용 절감을 위해 Public Subnet 위에 EC2를 사용 하도록 하겠습니다.

실습

🎨 VPC 및 Subnet 생성

먼저 AWS 에서 제공 해주는 Default VPC 를 이용해도 좋지만, 추후 관리를 위해서 VPC 및 서브넷 등의 설정 을 해야 합니다.

VPC 및 서브넷 등 설정 부터 실습 해보실 분은 링크 따라 읽어서 오시면 좋을 것 같습니다 😀

[AWS 시리즈] VPC 생성 및 구성 하기 실습 - Private Subnet, Public Subnet (1)

🎨  EC2 생성 하기

  1. 먼저, AWS 콘솔에 들어가서 EC2 대시보드에 접근 합니다.

  1. 인스턴스 시작을 통해서 인스턴스 생성을 시작 합니다.
  2. 적당한 이름과 운영체제를 선택 합시다. 저는 Amazon Linux 2023 AMI 를 통해 시작 하겠습니다.

  1. 먼저 새 키페어 생성 버튼을 눌러 인스턴스에 접근 할 수 있도록 해주는 키 페어를 생성 합니다.

    해당 키 페어는 EC2 인스턴스에 접근 할 때 사용 할 예정 입니다.


2. 또한, 네트워크 설정 에서 편집을 눌러 인터넷 에서 접근 할 수 있도록 설정 해줍니다.
  1. Public Sunbet 과 Public IP 을 선택해 줍니다.

  1. 보안 그룹을 아래와 같이 설정 해줍니다

Instance 접속을 위해 22번 포트를 현재 내 IP 에서 접근 할 수 있도록 보안 그룹 설정을 해주고, HTTP 및 HTTPS 접근을 위해 80 및 443 번 포트를 모든 IP 에서 접근 할 수 있도록 설정 해줍니다.

해당 설정으로 EC2 인스턴스를 생성 하면 Public 에서 접근 할 수 있는 IP 와 DNS 주소를 볼 수 있을 겁니다.

그럼 인스턴스 생성은 완료 되었습니다.

🎨  EC2 인스턴스 접근 하기

먼저 2가지 준비물을 챙깁시다.

  1. 생성한 키페어
  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 에 따른 사용자 이름
AMI 종류사용자 이름
Amazon Linux 2ec2-user
Amazon Linux AMIec2-user
CentOS AMIcentos, ec2-user
Debian AMIadmin
Fedora AMIfedora, ec2-user
RHEL AMIec2-user, root
SUSE AMIec2-user, root
Ubuntu AMIubuntu
Oracle AMIec2-user
Bitnami AMIbitnami

명령어를 통해서 Instance에 접속을 했으면 아래와 같은 화면을 볼 수 있을 겁니다.

profile
DFF (Development For Fun)

0개의 댓글