사이드 프로젝트로 만든 서버를 한번 배포해보려고 아마존에 올렸는데 굉장히 현실적인 문제를 마주하였다
그것은 URL뒤에다 :4000을 붙이기가 너무 귀찮아진 것이다
그래서 저 포트번호를 붙이고 싶지 않아서 구글에 리버스 프록시에 대해 검색해보던 중 NginX를 리버스 프록시로 쓸 수 있다고 해서 바로 삽질을 해봤다
기준은 Ubuntu 20.04 LTS 버전이다
NginX는 이 글에서는 리버스 프록시로 쓸 예정이지만 본래는 아파치의 문제를 해결하기 위해 새로 개발된 웹서버용 프로그램으로써 제작된 프로그램이다
웹서버용 프로그램답게 사용자의 요청에 맞추어 미리 작성되어있는 서버의 파일을 보내주는 프로그램이다
아파치와 다른 점은 아파치는 요청 하나당 쓰레드 하나를 생성하는 쓰레드 기반으로 작동하지만 NginX는 비동기 이벤트 기반으로 작동하기 때문에 아파치에 비해 더 높은 퍼포먼스를 보여준다
이러한 높은 퍼포먼스와 가벼움을 기반으로 2022년 5월 기준으로 아파치의 점유율을 추월한 상태이다
터미널에다 아래 명령어를 입력하면 nginx 설치가 뚝딱 하고 완료된다
sudo apt-get update
sudo apt-get install nginx -y
NginX의 설치가 완료됐으면 NginX를 실행시키자 아래의 명령을 터미널에 입력하면 된다
sudo service start nginx
서버가 부팅될 때 마다 NginX를 자동으로 실행시키고 싶다면 아래 명령어를 터미널에 입력해 NginX가 자동으로 실행되도록 해주자
sudo systemctl enable nginx
이제 기초적인 세팅이 완료되었다. NginX가 리버스 프록시로써 역할을 할 수 있도록 설정해주자
아래의 커맨드를 입력해 NginX 설정 파일을 열자
sudo vim /etc/nginx/nginx.conf
그럼 엄청나게 긴 파일이 열릴 텐데 Virtual Host Configs라는 주석이 달린 부분을 찾아서 그 아래에 있는 내용을 다 지우고 아래와 같은 내용으로 바꿔주자
include /etc/nginx/sites-enabled/*
site-enabled 폴더 안에 있는 모든 서버 설정파일을 인클루드 한다는 뜻이다
그럼 이제 리버스 프록시로 쓰기 위한 가상 호스트를 한 번 설정해보자.
우선 cd ..
을 해서 루트 디렉터리로 이동하고 /etc/nginx
디렉터리로 이동한다. 여기서 ls
명령어를 입력하면 여러개의 폴더가 뜰 텐데 sites-available 디렉터리에 원하는 이름으로 파일을 생성하고 아래의 내용을 입력해주자
http{
server{
listen [::]:80;
listen 80;
server_name [리버스 프록시를 적용할 서버의 호스트 이름]
location / {
proxy_pass http://localhost:[서버 프로그램을 실행중인 포트번호]
}
}
}
마쳤으면 cd ..
을 입력해 상위 디렉터리로 이동 후 이번엔 sites-enabled 폴더로 이동해주자
이 폴더에는 방금 생성한 서버 파일의 링크 파일을 생성해줄 것이다. 아래의 명령어를 터미널에 입력해주자
ln -s /etc/nginx/sites-available/[컨픽파일] /etc/nginx/sites-enabled/[컨픽파일]
이렇게 입력해주면 방금전에 작성한 컨픽파일의 심볼릭 링크(윈도우의 바로가기와 비슷하다고 생각하면 된다) 파일이 생성될 것이다
앞으로는 가상 호스트를 추가할 일이 있다면 이런 식으로 sites-available 폴더에 원본 파일을 생성하고 sites-enabled 폴더에 링크 파일을 생성해서 쓰면 된다
이제 NginX를 재시작 해주면 변경된 컨픽 파일 내용이 적용된다. 아래의 커맨드를 터미널에 입력해주자
sudo systemctl restart nginx
이제 모든 과정이 끝났다. 서버 URL에서 포트번호를 빼보고 연결해보자
포트번호를 떼고 연결을 시도했는데 잘 연결된다
이걸로 더 귀찮은 인간이 되는데 성공하였다