나만의 작고 귀여운 오라클 무료서버 만들기 (3) - express + nginx(Reverse Proxy)

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

출처 : https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html

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

출처 : https://artsysops.com/2020/02/09/how-to-create-a-http-load-balancer-with-nginx/

express 혼자서는 이런 훌륭한 로드벨런싱이 힘들다
(로드벨런싱 이외에도 프록시 서버를 이용하면 보안상 이점을 취할 수 있다)
따라서 해당 포스팅의 끝에
여러분들은 로드벨런싱이 가능한 작고 귀여운 서버를 얻게된다

여러분의 작고 귀엽지만 무능한 서버에 접속한다

ssh -i (key위치) opc@(작고 귀여운 서버의 IP)

이제 nginx설정을 건드려보자....
여러분의 작고 귀여운 서버가 Cent OS이고 nginx 1.14.xx 라면..
nginx의 디렉토리 구조는 아래와 비슷할것이다..

여러분들은 이제 conf.d/nodeapp.conf 파일을 만들어야한다..
#아래 파일에서 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 config에 대해서는 추후에 다루어본다... 

이제 nginx를 재시작한다

#selinux 설정
sudo setsebool httpd_can_network_connect on

#nginx 설정파일 검사
sudo nginx -t
#오류가 발생한다면 설정파일에 오타가 있는지 확인!

#nginx 재시작
sudo systemctl restart nginx

자 그럼 이제 다시 브라우저로 여러분들의 작고 귀여운 서버에 접속해보자!

gilee

gilee