Node.js express

[nginx, nodejs express] Express+nginx로 서버 열기

begong 2023. 9. 4. 21:28
반응형

개요

aws  Lightsail에서 ec2로 서버를 이전하고, aws route 53을 통하여 도메인을 발급받았다.

도메인이 "www.exaple.com"이라고 했을 때, 기존에 pm2를 이용해서 서버를 열 경우 "www.exaple.com:8000" 와  같이  포트번호 까지 입력을 해줘야 서버에 접속이 가능했다.  

 

도메인 주소까지 발급 받았는데 포트번호를 붙이기 싫어 http 전용 포트인 80번으로 서버를 열기 위해 방법을 찾아본 결과,

라고 chatgpt가 알려주었다.

 

나는 여기서 nginx를 사용하기로 하였는데 성능, 보안 측면에서 Nginx를 사용하는 것이 이점이 많아고 해서이다.

참고 글 : https://nginxstore.com/blog/nginx/node-js-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%84-%EC%9C%84%ED%95%9C-5%EA%B0%80%EC%A7%80-%EC%84%B1%EB%8A%A5-%ED%8C%81/

 

Node.js 애플리케이션을 위한 5가지 성능 팁

Node.js 는 세계에서 가장 인기있는 프로그래밍 언어인 Javascript로 서버 애플리케이션을 만드는데 필수적인 도구입니다. Node.js는 이제 모든 종류의 Microservices 기반 개발과 배포에 필수적인 도구로

nginxstore.com

 

EC2 ubuntu 서버에 nginx설치

sudo apt update
sudo apt install nginx

우분투 서버의 경우 위의 명령어로 설치 가능하다.

 

Nginx 설정파일 편집

apt명령어로 nginx를 설치한 경우 아래의 경로에서 설정파일을 확인 가능하다.

cd /etc/nginx/sites-available
sudo vim default

해당 폴더가 기본적으로 readonly로 설정되어 있어, 수정을 하려면 관리자 권한으로 실행해야 한다.

위와같이 내용을 입력해주면 된다. proxy_pass의 주소의 경우, 서버를 연 포트를 적어주면 된다.

server_name의 경우 서버의 도메인 주소를 넣어주면 된다.

(다중도메인, 다중 호스팅 환경을 구성할때 사용하는 지시어라고 한다.)

 

파일을 저장한 후,

sudo nginx -t  # 구성 검사
sudo systemctl reload nginx  # Nginx 다시 로드

구성 검사를 한 뒤, nginx를 재실행 하면 된다.

Express 서버 실행

Nginx를 사용하더라도 Pm2를 이용하여 서버를 실행시켜주어야 aws instance를 종료하더라도 서버가 계속 실행이 된다. 실행방법은 nginx를 설치하기 전과 동일하게 npm을 사용하여 실행시켜주면 된다. 별다른 설정은 필요하지 않다

성공 화면

 

마주쳤던 에러

nginx설정파일을 들어가보면

try_files $uri $uri/ =404;

옵션이 기본으로 존재한다. 

처음 실행 시 위의 옵션을 삭제하지 않고, 필요한 옵션을 추가하여 실행시켰다.

실패한 코드

example.com으로 접속하면 잘 실행이 되었는데, exaple.com/test 등 라우팅을 하려고 시도하면 not found에러가 발생하였다.

 

Not Found error

이것저것 찾아본 결과 try_files는 정적파일을 검색할때 사용하는 지시어였다. 나는 rest api 서버를 운영하려고 하는 중이므로 필요없는 기능이였고 삭제를 하니 정상적으로 작동을 하였다.

참고 글 : https://blog.logrocket.com/how-to-run-a-node-js-server-with-nginx/

 

How to use Nginx as a reverse proxy for a Node.js server - LogRocket Blog

Learn how to set up Nginx as a Node.js server for backend applications with this short tutorial and demonstration.

blog.logrocket.com

 

반응형