현재 배포한 사이트의 도메인이
http://도메인.com:3000 으로 접속해주어야만 하는 상황이다.
이는 컨테이너 내에서 3000포트로 실행을 해주었기 때문인데 기본적으로 http 통신은 80포트로 접속이 되기 때문에, 도메인.com을 입력해서 해당 사이트에 접속하려하면 기본적으로 80포트를 사용하게 된다.
그렇기 때문에 포트포워딩, 즉 80포트로 접속하더라도 3000포트로 접속되도록 해주어야한다.
여기서 Nginx 가 해당 역할을 해주는데, Nginx 는 웹서버의 일종이다.
WAS(Web Application Server)와 차이점이 있는데, 웹서버는 정적인 컨텐츠를 전달해주거나 로드밸런싱, 방화벽 등 다양하게 WAS를 돕는 역할을 해준다.
Nginxs는 웹서버, Express를 WAS로 볼수 있다.
즉 우리가 흔히 생각하는 클라이언트와 서버 사이에 존재해서 서로의 요청/ 응답을 중재해주는 역할을 해준다.
(간단히 요약해놓지만 더 많은 역할이 존재하는것 같다.)
이 리버스 프록시 또한 웹서버에서 수행할 수 있는 기능 중 하나이다.
리벅스 프록시는 클라이언트 측에서 요청을 받아서, 그를 백엔드로 전달해주고, 백엔드에서 받은 응답을 다시 클라이언트 측으로 전달해주는 역할을 해준다.
즉 클라이언트 측에서 domain.com을 입력하더라도 암묵적으로 domain.com:3000 로 연결해주어서 포트번호를 생략하더라도 해당 사이트에 정상적으로 접속할수 있도록 해주는것이다.
sudo yum update -y
sudo yum install nginx -y
sudo vi /etc/nginx/nginx.conf
위의 명령어를 입력하면 nignx의 config 파일이 나온다.
server {
listen 80;
listen [::]:80;
server_name 도메인.com; #사용하고싶은 도메인
root /usr/share/nginx/html;
location / {
proxy_pass http://localhost:3000; #해당포트 입력
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
위의 형식으로 해당 부분을 변경해주고 Esc를 누른다.
그 후에 :wq 를 입력후 Enter 를 누르면 설정이 완료 된 것이다.
sudo service nginx restart
그 후에 Nginx를 재시작해주고 다시 도메인에 접속해보면 포트번호 없이 접속해도 잘 접속 되는걸 확인할 수 있다.