지난 시간에는 AWS를 이용해서 EC2 인스턴스를 생성하고, 생성한 인스턴스에 ssh로 접근해서 git, pm2, nginx를 설치했습니다. 그리고 Github에서 express 프로젝트 소스코드도 받아왔습니다.
이번 시간에는 nginx를 프록시 서버로 이용해 80번 포트가 localhost:8000에 맵핑되도록 설정을 변경해봅시다.
생성한 인스턴스에 접근합니다.
ssh -i [.pem file path] [user name]@[ip]
/etc/nginx 폴더에서 📁 site-availables와 📁 site-enables 폴더를 생성합니다.
cd /etc/nginx
mkdir site-availables site-enables
site-available 폴더로 이동한 뒤 .conf 파일을 생성합니다.
cd site-availables
vi blind.conf
blind.conf에 80번 포트로 들어오는 요청을 http://localhost:8000으로 보낸다는 다음 내용을 적어줍니다.
server {
listen 80;
server_name ts-blind.com;
location / {
proxy_pass http://localhost:8000;
}
}
:wq
로 내용을 저장하고 vi 에디터를 빠져나옵니다.
site-availables의 설정 파일을 site-enables로 복사하지 않고 해당 파일에 대한 바로가기를 만들 것 입니다.
site-enables 폴더로 이동한 뒤, 금방 만든 설정 파일 blind.conf의 심볼링 링크를 만듭니다.
cd ../site-enables
ln -s ../site-availables/blind.conf ./
ls
# ✨ blind.conf 파일의 심볼릭 링크가 생겼습니다.
/etc/nginx/nginx.conf 파일에는 디폴트 nginx 설정값이 있습니다.
이 파일에 방금 만들어준 blind.conf 설정을 추가해줍니다.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/site-enables/*.conf; # <- 여기에 추가해줍니다. (마지막 세미콜론 누락주의!)
# 기존의 server {...} 들은 주석처리 해줍니다.
}
설정을 변경했으므로 nginx 서버를 재시작해줍니다.
sudo nginx -s reload
웹브라우저를 통해 인스턴스의 퍼블릭 ip 주소로 접근했을 때 Express 초기화면이 반겨준다면 맵핑 설정에 성공한 것입니다.
그렇지 않고 502 Bad Gateway
가 나타난다면, 프로젝트의 포트가 blind.conf에서 설정한 8000과 동일한지 확인해봅시다.
nginx의 에러와 접근로그는 /var/log/nginx에서 확인할 수 있습니다. root 계정 전환이 필요합니다.
sudo su
cd /var/log/nginx
ls
# access.log와 error.log 파일들
root 계정을 빠져나오려면 exit
명령어를 사용합니다.