본문 바로가기
DevOps

Nginx - Nginx와 Node.js 환경 서버 구성하기 (feat. Windows)

by devLog by Ronnie's 2021. 6. 25.

들어가며


Nginx 이해와 활용 방법에 이어 환경 구성하는 방법을 정리한다.

 

먼저 운영체제는 Windows 환경에서 진행하였고 우분투와 같이 다른 운영체제에서 사용하시는 분들은 설치 방법등만 차이가 있으니 큰틀의 흐름에 따라 진행하면 된다.

 

node.js 환경 갖추기


제일 먼저 node.js에 환경 먼저 구성한다. 아래에 링크 참고를 하여 진행해준다.

https://sjparkk-dev1og.tistory.com/38?category=1025699 

 

Node.js - Node.js & NPM

Node.js - Node.js & NPM 정의 (Node.js 공식 사이트) Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, Non 블로킹 I/O 모델을 사용해 가볍고 효율적입니..

sjparkk-dev1og.tistory.com

https://sjparkk-dev1og.tistory.com/44?category=1025699 

 

Node.js - Express 를 이용한 웹 앱 만들기 (템플릿 엔진 - jade)

Node.js - Express 를 이용한 웹 앱 만들기 Node를 이용하여 웹 어플리케이션을 만들때 가장 많이 쓰는 Express를 이용한다. Express는 가장 인기있는 Node웹 프레임워크이다. 1. Express 설치 Express 모..

sjparkk-dev1og.tistory.com

 

자 여기까지 설정이 되었다면 들어가기 앞서 전체적인 실행 환경 테스트 구성도를 정리해보았다. 

 

그럼 먼저 테스트를 위한 server.js 파일을 만들어 준다. 

웹페이지에서 테스트를 위해 다음 코드를 작성해준다.

 

var http = require("http");

http
  .createServer(function (req, res) {
    res.writeHead(200, { "Content-Type": "text/plain" });
    res.end("Hello\n");
  })
  .listen(8888, "127.0.0.1");

http
  .createServer(function (req, res) {
    res.writeHead(200, { "Content-Type": "text/plain" });
    res.end("World\n");
  })
  .listen(7777, "127.0.0.1");

잘 응답하는지 확인을 위해 로컬에서 먼저 테스트를 해본다. 잘나온다.

 

그럼 노드 구성은 마쳤으니 Nginx를 설치하여 주자.

아래에 링크에 들어가 다운을 받아준다. 윈도우 환경이 아닌 사람들은 각 환경에 맞는 설치 방법을 검색하면 터미널 명령어들이 나올 것이다.

http://nginx.org/en/download.html

 

nginx: download

 

nginx.org

 

 

 

압축을 푼 후 해당 파일에 exe 설치 파일을 실행해준다. 

따로 설치 완료가 됐다는 창은 안뜨고 작업 관리자에 백그라운드 프로세스에 들어가보면 다음과 같이 Nginx가 실행되고 있으면 잘 된거다.

이때 설치가 안되는 경우가 있는데 iis등을 사용해서 80포트를 사용하고 있다면 설치가 안된다. 왜냐하면 Nginx에 기본 컨피그 설정이 80포트로 잡혀있기 때문이다. 이때는 80포트를 죽이거나 아니면 Nginx에 기본 컨피그 설정을 바꿔준다.

conf 폴더 안에 nginx.conf 파일에 들어가 listen 부분을 변경해준다.

이렇게 설치가 완료가 됐다면 Nginx 접속 테스트를 해보자. 현제 Nginx 에 포트를 8087 로 설정해두었기 때문에 local에 8087로 접속했을때 아래와 같은 화면이 나오면 된다.

이제 로컬환경에서는 잘되는 것을 확인했으니 외부 접속 테스트를 진행해보자.

구성도에서 봤듯이 현재 테스트 환경이 ipTime이 있기 때문에 포트포워드를 설정을 해주어야 한다.

iptime이 아닌 방화벽 장비가 있어도 포트포워드를 걸어줘야한다. 아래 고급설정에 포트포워드 기능이 있다.

 

현재 Nginx의 포트가 8087번이기 때문에 외부에서 접속시 외부IP:8087로 요청을 들어왔을때 ipTime에서는 포트번호 8087과 연결해줄 내부 ip 및 내부 포트 번호를 적어준다. 이렇게 설정을 추가했다면 꼭 저장을 해줘야한다!

이처럼 설정을 했다면 외부아이피:10000 으로 접속했을때 위에서 Nginx페이지가 보인다면 제대로 설정이 된것이다.

이제 여기까지 성공했다면 외부 - Nginx & Nginx - Node가 연결이 완료된 것이다.

이제 마지막으로 외부에서 Node로 요청에 대한 설정을 해보자. 눈치챘겠지만 이 설정은 Nginx에 설정을 해주면 된다. 

위에서 잠시 봤었던 nginx.conf 컨피그 파일에 들어간다. 

 

다음과 같이 location을 추가해준다. /hello 로 요청시 로컬에 8888로 요청이 들어가게 된다. /world도 마찬가지이다.

이때 주의할점은 컨피그 파일에 내용을 수정했을시 reload가 꼭 필요하다.

cmd를 이용해 해당 파일로 이동 후 아래에 명령어를 입력해준다. (nginx -s reload)

아래에 화면과 같이 아무 글이 안나온다면 제대로 수정된 것이다.

만약 에러가 있다면 아래와 같이 친절하게 라인넘버를 알려주니 수정을 하면 된다.

이제 외부에서 접속하여 hello와 world가 제대로 나오는지 확인을 해보자.

정리를 해보자면 외부에서 해당 서버의  외부아이피:포트/패스 로 요청을 보내면 포트에 맞는 포트포워드 설정으로 인해 Nginx로 가게 되고 Nginx에서 패스를 보고 내부 node로 요청을 보낸다. 

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글