본문 바로가기



NodeJs 04: 노드JS사이트에 nginx연동



안녕하세요. 각성한 데브키라입니다. 이 가이드는 Node.js가 설치된 상태에서 Nginx 설치 및 설정, 그리고 Node.js 웹 애플리케이션 연동 방법을 단계별로 설명합니다. 특히, Nginx를 사용하여 단일 서버에서 여러 Node.js 앱을 운영하는 경우에 유용합니다.

1. nodejs설치

nodejs는 이미 설치되었다고 가정하고 다음순서를 진행하도록 하겠습니다.

만약 설치가 되지 않았다면 아래 포스팅을 참조하시길 바랍니다.

https://alphonse.tistory.com/85

 

2. nginx설치

Nginx는 보통 /etc/nginx에 설치되며, 이 위치는 대부분의 리눅스 배포판에서 표준적으로 사용되는 경로입니다. 
그리고 웹 서버 설정 파일들은 /etc/nginx/sites-available에 저장되며, 이들 중 활성화된 설정 파일들은 /etc/nginx/sites-enabled에 씸볼릭 링크로 연결됩니다.

먼저, Nginx를 설치하기 위해 아래의 명령어를 따라 하시면 됩니다.

 

  1.  Ubuntu 패키지 목록을 업데이트합니다.
    sudo apt-get update

  2.  그다음, Nginx를 설치합니다.
    sudo apt-get install nginx

  3.  Nginx가 정상적으로 설치되었는지 확인하기 위해 아래의 명령어를 실행합니다.
    systemctl status nginx

  4.  nginx버전을 확인합니다.
    nginx -v
    active (running)이라고 표시되면 Nginx가 정상적으로 작동하고 있는 것입니다.
    이제 Nginx가 설치되었으니, 웹사이트를 설정해서 Nginx 서버와 연결하면 됩니다. 

3. nodejs에 nginx연동해서 웹사이트접속 가능하도록 설정해 보겠습니다.

아래처럼 2개의 웹사이트를 구성했고 nginx에서 2개의 웹사이트를 연결해서 관리할 수 있는 환경을 구성해 보도록 하겠습니다. 

1번 사이트) /www/mydomain/app 3000번포트
2번 사이트) /www/mytest/app 3001번 포트

 

nodejs와 nginx가 모두 설치되었고
도메인도 준비가 되었습니다.
test.mydomain.kr로 접속하면 3001번 포트로 가고
http://www.mydomain.kr 또는 mydomain.kr로 접속하면 3000번 포트로 이동할 수 있도록 멀티사이트를 운영할 수 있도록

설정해 보겠습니다.

nginx의 설정파일은 관리하기 편하도록 1개의 파일에 2개의 사이트에 대한 설정내용을 모두 작성하겠습니다.

 

아래와 같이 Nginx 설정파일을 작성하면 요청하신 대로 동작하게 될 것입니다. 
먼저 /etc/nginx/sites-available/mydomain라는 이름의 파일을 생성해 주세요.
명령)
sudo vi /etc/nginx/sites-available/mydomain

입력 후 wq!로 저장하시면 됩니다.

server {

    listen 80;

    server_name www.mydomain.kr mydomain.kr;

​

    location / {

        proxy_pass http://localhost:3000;

        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;

    }

}

​

server {

    listen 80;

    server_name test.mydomain.kr;

​

    location / {

        proxy_pass http://localhost:3001;

        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;

    }

}

 

 

명령에 대한 심볼릭링크를 생성합니다.

명령)
sudo ln -s /etc/nginx/sites-available/mydomain /etc/nginx/sites-enabled/
nginx 재시작
sudo systemctl restart nginx

 

여기까지 진행 후

 

test.mydomain.kr은 3001번 포트 사이트로 접속되고

mydomain.kr, www.mydomain.kr 은 3000번 포트 트 사이트로 이동되는 것을 확인할 수 있습니다. 

 

이제 접속이 잘되지만 주소표시줄을 보면 "안전하지 않음"이라고 표시가 되기 때문에

SSL인증서설정까지 해줘야 합니다.

다음 포스팅을 통해서 SSL인증서 설치를 진행해 보도록 하겠습니다.

 

NodeJs 01: 노드JS의 특징과 활용사례를 소개합니다.
NodeJs 02: 노드JS를 시작하기 위한 설치와 환경설정 
NodeJs 03: 우분투에서 노드 JS 생성하고 구동하기 
NodeJs 04: 노드JS사이트에 nginx연동 
NodeJs 05: nginx에서 SSL인증서 설정 
NodeJs 06: Systemd를 이용한 Nginx서버 백그라운드 실행 운영  
NodeJs 07: NodeJs웹프로젝트 시작 

[ NodeJs강좌 전체목록 ]

 

NodeJs: 기초부터 고급까지 실무 적용 완벽 가이드

안녕하세요. 데브키라입니다. 이 시리즈는 Node.js의 기본부터 고급 기술까지 단계별로 다룹니다. 서버 실행, 페이지 라우팅부터 nginx 연동, SSL 설정까지 실무 적용을 목표로 합니다. Node.js의 모든

devkira.alphonse.kr