nodejs를 설치하고 express 앱이 돌아가고있지만
외부에서의 접속은 불가능한 상태이다..
우리의 작고 귀여운 서버는 Nginx 웹서버가 돌아가고있고
그 안의 작고 귀여운 express는 웹서버로 들어오는 요청 중
express가 필요한 부분만 처리하고싶다....
이때 우리가 올려놓은 express는 WAS(Web Application Server)이고
WAS와 웹서버를 연동하는 방법은 크게 두 가지가 있다..
WAS가 내부에 있다면 Reverse Proxy, 외부에 있다면 Forward Proxy
우리의 작고 귀여운 서버의 웹서버는 Reverse Proxy로 세팅해보자

위 그림을 보면 인터넷의 사용자들이 Reverse Proxy를 통해서
내부(Proxy 서버가 속해있는 네트워크의)의 WAS에 접속하고있다
사실 express자체도 웹서버의 기능을 수행할 수 있지만
우리의 작고 귀여운 서버의 Proxy단에 nginx를 두는 이유는 따로 있다..

express 혼자서는 이런 훌륭한 로드벨런싱이 힘들다
(로드벨런싱 이외에도 프록시 서버를 이용하면 보안상 이점을 취할 수 있다)
따라서 해당 포스팅의 끝에
여러분들은 로드벨런싱이 가능한 작고 귀여운 서버를 얻게된다
여러분의 작고 귀엽지만 무능한 서버에 접속한다
ssh -i (key위치) opc@(작고 귀여운 서버의 IP)
이제 nginx설정을 건드려보자....
여러분의 작고 귀여운 서버가 Cent OS이고 nginx 1.14.xx 라면..
nginx의 디렉토리 구조는 아래와 비슷할것이다..

#아래 파일에서 server블록을 주석처리한다
sudo vim /etc/nginx/nginx.conf
#express용 nginx설정파일 생성
sudo vim /etc/nginx/conf.d/nodeapp.conf
#vim이 실행되면 아래 내용 복사 --> 붙여넣기 후 저장
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000;#(이전에 express를 별다른 옵션 없이 올렸다면 3000번 포트가 맞다 혹시 다른 포트를 썼다면 해당 포트로 수정하자)
}
}
이제 nginx를 재시작한다
#selinux 설정
sudo setsebool httpd_can_network_connect on
#nginx 설정파일 검사
sudo nginx -t
#오류가 발생한다면 설정파일에 오타가 있는지 확인!
#nginx 재시작
sudo systemctl restart nginx
자 그럼 이제 다시 브라우저로 여러분들의 작고 귀여운 서버에 접속해보자!
