프로그래밍/NodeJS

nodejs&nginx 연동하기

Beginner:) 2022. 12. 4.
320x100

처음에는 파이썬 flask 사용하려다 nodejs로 갈아탐 ...

 

nodejs만 사용하면 오류가 존재한다고 nginx를 거쳐서 들어오는 것을 추천한다고 한다.

 

사실 개인적으로 사용할 것이라 굳이 nginx를 사용하지 않아도 되지만... 익숙해질겸 사용해본다.

 

환경은 라즈베리파이3 buster이다.

 


1. 필요 패키지 설치

1-1. nginx 설치

sudo apt-get install nginx

 

1-2. nodejs 설치

sudo apt-get install nodejs

node -v로 설치 확인

 

 

1-3. npm 설치

nodejs를 설치하면 npm도 같이설치된다길래 그런가보다 했는데 설치가 안됨. 따로 설치

sudo apt-get install npm

 

1-4. express 설치

참고로 나의 경로는 /home/park/www에 설치

sudo npm init
sudo npm install express

https://expressjs.com/en/starter/installing.html

 

2. 설정

2-1.nginx 설정

 

/etc/nginx/nginx.conf 파일 수정한다. log파일 경로만 바꿔줄 것이니 필수는 아니다.

http 구역에 access_log와 error_log 경로만 수정해준다. 경로에 logs폴더가 없으면 생성하자.

# sudo vim /etc/nginx/nginx.conf

access_log /home/park/logs/nginx_access.log;
error_log /home/park/logs/nginx_error.log;

 

/etc/nginx/site-available/ftp-server를 생성한다.

nodejs를 80번 포트로 두는 것 보다는 

nginx 80번으로 들어와 라우트하는 것이 더 안정성이 높다고 한다.

그리고 기존에 존재하는 default는 삭제한다.

 

# sudo vim /etc/nginx/site-available/ftp-server

server {
    listen 80;
    location / {
      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_set_header X-NginX-Proxy true;

      proxy_pass http://127.0.0.1:3000/; 
      proxy_redirect off;
    }

    gzip on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_min_length  1000;
    gzip_disable     "MSIE [1-6]\."
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 }

 

심볼릭 링크를 생성해준다.

sudo ln -s /etc/nginx/sites-available/ftp-server /etc/nginx/sites-enabled

 

nginx를 재시작한다.

sudo service nginx restart

 

2-2. npm start

이전 nginx에서 nodejs 포트를 3000번으로 지정해줬기 때문에 포트는 3000번으로

/home/park/www/app.js를 수정한다.

# sudo vim /home/park/www/app.js

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

 

수정하였으면 스타트시킨다.

# 위치는 /home/park/www/
sudo node app.js

 

반응형

댓글