aws ec2 NginX + Node.js+SSL(무료) 인증 달기

Calvin Park·2022년 8월 27일
0
post-custom-banner

너무나도 간단한 node.js+nginx에 ssl(let's Encrypt) https를 달아보자!!
일단 aws에 접속을 해서 ec2 인스턴스를 생성한다.
생성하는 방법은 너무나도 간단하기 때문에 설명은 skip.

0. apt update를 한다.

sudo apt update

본글은 Ubuntu를 이용을 했습니다.

자 생성을 했으면
node와 npm을 설치한다.

//맞는 node js 버전을 설치를 한다. (최신 버전은 될 수 있으면 피한다. Use recommended version for most Users. Version 16 is the Recommended for most users at the moment.)
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

sudo apt install nodejs

//버전 체크
node --version

그리고 git에 있는 작업하고 있는 repository를 clone

git clone yourWhateverTheProjectis.git

그리고 clone 한 repository에 cd를한다.

cd toYourProject
//npm 설치
npm i 
//그리고 실행(whatever your start command. Start command 없으면 error남...) 
npm start
//정상적으로 돌아가면
ctrl+c

그리고 PM2 process 메니저를 사용해서 서버를 계속 돌린다.

//pm2설치 
sudo npm i pm2 -g
//설치 완료 후 (app.js 또는 시작하는 파일이름)
pm2 start app.js

//pm2의 다른 명령어
//현재 running하고 있는 명령어
pm2 show app
//status를 볼수 있는 명령어
pm2 status
//pm2 재시작
pm2 restart app
//pm2 정지
pm2 stop app
//pm2 로그
pm2 logs
//pm2 로그 삭제
pm2 flush

//ubuntu 접속시 reboot되는 명령어
pm2 startup ubuntu

//명령어에는 sudo 를 사용한다.

그다음 ufw firewall을 설정한다.
ufw: 우분투의 기본적인 방화벽.

//ufw 활용
sudo ufw enable

//ufw status 확인
sudo ufw status

//ufw ssh 허용(Port 22)
sudo ufw allow ssh 

//ufw ssh http 허용(Port 80)
sudo ufw allow http

//ufw https 허용 (Port 44)
sudo ufw allow https 

제일 중요!
Node.js의 버퍼 오버플로우 취약점을 예방하기 위해서는 nginx를 프록시 서버로 앞단에 놓고 Node.js를 뒤쪽에 놓아야 한다.

그래서 nginx 를 설치를 해보자!

sudo apt install nginx
//설치를 했으면 nginx directory로 이동
//vi || vim|| nano를 하던 상관없다. 개인적으로 nano를 사용하는것이 편한거 같다.
sudo nano /etc/nginx/sites-available/default

default폴더로 가면 지렁이같은 영어가 엄청써져 있다... 쫄지 말자

    server_name 본이이구매한도메인 www.본인이구매한도메인

    location / {
        proxy_pass http://localhost:5000; #본인 설정한 localhost로 설정.
        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;
    }

그다음 설정을 완료 했으면 저장을 한다.

//nginx 설정한 것을 checking 한다
sudo nginx -t

//문제가 없으면
sudo service nginx restart

이렇게 하면 완료 했다. node.js의 버퍼 오버플로우의 취약점을 예방하기 위해 프록시 서버 변경.

마지막으로

udo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx -d 본인이구매한도메인 -d www.본인이구매한도메인

# 90일동안만 무료이니깐 만료되기 전에 연장을 해준다.
certbot renew --dry-run

그리고 aws 인스턴스 들어가서 443포트 추가

그리고 www.본인이구매한도메인 으로 접속하면 완료

끝~!

profile
Personal Velog Note
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 5월 23일

안녕하세요! 글 잘 봤습니다. 노드나 ec2 모두 왕초보인데 http로 접속은 잘되는데 https는 위의 글을 빠짐없이 따라해도 안되네요. ㅜㅜ node 파일에서 http.createServer 이부분도 다 https로 바꿔주면 될까요.?? app.js 코드 참고 할 곳이 있을지요...

답글 달기