이번 포스팅에서는 Nginx에 대해 알아보고자 한다. 그리고 Nginx를 이용해서 리버스 프록시(Reverse Proxy)를 구현해 보도록 하자.
< 목차 >
- 프록시 ( Proxy )
- Nginx 설치
- AWS 탄력적 IP
- 서버컴퓨터에 git clone 받기
1. 프록시 ( Proxy )
프록시의 사전적 의미는 "대신" 혹은 "대리"이다. 말 그대로 두 PC가 통신을 할 때 직접 하지 않고 중간에서 대리로 통신을 하는 것을 "프록시"라고 하고 이러한 중계 역할을 하는 것을 "프록시 서버"라고 부른다. 다시말해, 클라이언트와 서버 사이의 "중계 서버"라고 생각하면 된다.
프록시 서버가 중간에 위치함으로 인해 클라이언트는 프록시 서버를 서버라고 인식하고 서버는 프록시 서버를 클라이언트라고 인식하게 된다. 프록시 서버는 서버가 어디에 위치하는지에 따라 포워드 프록시와 리버스 프록시로 나뉜다. 우리가 알아볼 것은 리버스 프록시에 대한 개념이다.
리버스 프록시는 프록시 서버가 애플리케이션 서버의 앞에 위치하여 클라이언트가 서버에 요청을 할 때 리버스 프록시를 호출하고, 리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 한다. 이 경우, 클라이언트는 애플리케이션 서버를 직접 호출하는 것이 아니라 프록시 서버를 통해 호출하기 때문에 리버스 프록시는 애플리케이션 서버를 감추는 역할을 하게 된다. Nginx를 사용하면 이러한 리버스 프록시가 가능해진다.
리버스 프록시의 특징 / 역할
- 로드밸런싱 : 리버스 프록시 뒤에 여러개의 WAS를 둠으로써 사용자의 요청을 분산할 수 있다. End-point 마다 호출 서버를 설정할 수 있어 역할에 따라 서버의 트래픽을 분산할 수도 있다.
- 보안 : 보안 상의 이유로 서버에 직접 접근하는 것을 막기 위해 리버스 프록시를 구성하여 접근하도록 한다.
2. Nginx 설치
AWS 서버컴퓨터에 원격 접속 한 다음 아래의 코드를 입력하여 Nginx를 설치해주도록 하자.
## sudo apt update && sudo apt upgrade
sudo apt install nginx
## nginx 시작하기
sudo service nginx start
## nginx 상태 확인하기 (실행여부)
sudo service nginx status
## nginx 종료하기
sudo service nginx stop
## sudo service nginx status
cd /etc/nginx/sites-enabled
## default 파일 확인
ls
## nginx 설정파일 열기
sudo vi default
## default 파일 문법 오류 체크
sudo nginx -t
여기서는 Nginx를 설치하는 부분까지만 다루도록 하고 Nginx의 default 파일을 수정하여 리버스 프록시를 설정하는 부분은 다음번 포스팅에서 다루도록 하겠다.
2022.06.02 - [토이 프로젝트] - AWS EC2 배포 - (4) PM2 & Nginx 설정하기
3. AWS 탄력적 IP
AWS에서 말하는 탄력적 IP는 서버컴퓨터에 고정 IP를 설정해주는 내용이다.
상단 메뉴바에서 "탄력적 IP"로 검색해서 들어간 다음 "탄력적 IP 주소 할당" 버튼을 클릭한다.
할당 버튼을 클릭해 주기만 하면 된다.
탄력적 IP 주소가 할당되었으면 원하는 이름으로 바꿔주도록 하자.
IP 주소를 클릭해서 들어간 다음, 탄력적 IP 주소 연결을 눌러 탄력적 IP 주소를 연결할 인스턴스를 선택해주면 된다.
back-server 인스턴스에 탄력적 IP가 할당된 것을 확인해주면 된다.
4. 서버컴퓨터에 git clone 받기
이제 각자의 github에 올라가 있는 프로젝트를 서버 컴퓨터에서 clone 받도록 하자.
## home 디렉토리로 이동한 다음
cd ~
## git clone 받기
git clone -b next_project --single-branch [github 주소]
npm install 을 해준 다음, 각자의 package.json 파일 안에 작성되어 있는 script 내용을 기반으로 빌드를 진행해준다.
npm install
## 빌드
npm run build
서버컴퓨터의 메모리 용량이 적을 경우 빌드 작업에 많은 시간이 소요될 수 있다. 스왑메모리를 통해서 시간을 단축시키거나 빌드가 완료된 파일을 github에 올려놓은 상태로 clone을 받는 것도 시간을 단축시킬 수 있는 방법이니 참고하도록 하자.
## 스왑메모리
## 설정
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
## 해제
sudo swapoff -v /mnt/swapfile
sudo rm /mnt/swapfile
'AWS' 카테고리의 다른 글
AWS EC2 배포 - (5) Route 53 / 도메인 연결하기 , HTTPS (0) | 2022.06.02 |
---|---|
AWS EC2 배포 - (4) PM2 & Nginx 설정하기 (0) | 2022.06.02 |
AWS EC2 배포 - (2) 서버컴퓨터 환경설정 (0) | 2022.06.01 |
AWS EC2 배포 - (1) 인스턴스 생성 및 연결 (1) | 2022.06.01 |