이상학의 개발블로그

[NGINX] NGINX를 nodejs express의 reverse proxy로 사용하기 본문

프로젝트

[NGINX] NGINX를 nodejs express의 reverse proxy로 사용하기

학학이 2016. 3. 27. 14:49

reverse proxy란 ~


프록시는 일반적으로 원활하게 여러 서버간에 부하를 분산 다른 웹 사이트의 콘텐츠를 표시하거나 HTTP 이

외의 프로토콜을 통해 응용 프로그램 서버에 처리 요청을 전달하는 데 사용된다.


NGINX에 요청을 프록시로하면, 지정된 프록시 서버에 요청을 보내고 응답하고, 클라이언트에게 전송한다.


참고 :  NGINX 공식 홈페이지 https://www.nginx.com/resources/admin-guide/reverse-proxy/



https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04


전제 조건

  1. Node.js 와 Npm이 설치 되어있어야한다.
  2. pm2 설치
  3. express-generator 로 프로젝트 만들기
  4. NGINX 설치

만얀 ~/test 라는 프로젝트를 만들었다면
$ cd test
$ pm2 start bin/www        로 pm2를 실행한다.

여기서 bin/www로 실행하는 것이 중요하다 test/app.js로 실행해도 가능하나 NGINX를  reverse proxy로 사용할 때는 502 bad gateway 에러가 난다. 이유는 더 찾아봐야겠다.


$ sudo vi /etc/nginx/sites-available/default        를 입력해서 default 파일을 수정한다.

수정전에 기본 default 파일은 따로 이름을 바꿔 저장해두는 것이 좋다. 원본은 유지하자!!



/etc/nginx/sites-available/default 
내용을 모두 날리고 다음과 같이 입력한다.

server {
    listen 80;

    server_name  도메인;

    location / {
        proxy_pass http://127.0.0.1:3000;
       #proxy_pass http://naver.com;
        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;
    }
}

도메인 이라고 된 부분이 중요하다. 이곳에 사용할 서버의 도메인을 입력한다.  
ex)  server_name gachon.ga www.gachon.ga;


만약 현재 express 앱의 포트가 3000번이 아니면 그 것으로 변경한다.
ex)  proxy_pass http://127.0.0.1:8080;


vi를 저장 종료한다.
default 파일이 바뀌었다고 바로 NGINX 서버에 반영되지 않는다.


$ sudo /etc/init.d/nginx restart
명령어를 입려서 NGINX를 재시작한다.
 OK가 뜨면 브라우저에 도메인을 입력해본다.


성공했다면 기본 NGINX defualt 페이지가 아닌  express default 페이지가 나온다.










Comments