https-with-nginx-and-certbot
❗
Nginx에 대한 수업이 아니므로 Nginx에 대한 자세한 설명은 생략한다.
✅ 0. 사전 환경 셋팅하기
→ 주의) EC2에 도메인을 연결시키지 않으면 Certbot이 정상적으로 작동하지 않는다.
✅ 1. Express 서버의 실행 포트를 3000번으로 바꿔주기
Nginx를 80번 포트에서 실행시킬 것이기 때문에 Express 서버는 3000번에서 띄워주도록 하자.
app.js
require('dotenv').config();
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send(`.env 테스트 : ${process.env.DATABASE_NAME}`);
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
테스트를 위해 보안 그룹에서 3000번 포트를 추가적으로 열어주자.
✅ 2. Nginx 설치
$ sudo apt update
$ sudo apt install nginx
✅ 3. Nginx 잘 설치됐는 지 확인
[리눅스 명령어로 확인]
$ sudo service nginx status
[EC2 IP로 접속해서 확인]
주의) https://<ip 주소>가 아니라 반드시 http://<ip 주소>로 접속해야 한다.
✅ 4. Certbot 설치하기
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
✅ 5. SSL 인증서 발급받기
$ sudo certbot --nginx -d <도메인 주소>
# 예시
$ sudo certbot --nginx -d jscode-edu.link
** 반드시 해당 EC2에 도메인을 연결한 뒤에 위 명령어를 쳐야 정상 작동한다.
✅ 6. 리버스 프록시 설정해주기
$ sudo vi /etc/nginx/sites-available/default
/etc/nginx/sites-available/default
...
server {
...
server_name jscode.edu.link;
location / {
try_files $uri $uri/ =404;
proxy_pass http://localhost:3000/;
}
...
}
✅ 7. Nginx 재시작하기
$ sudo service nginx restart
✅ 8. 백엔드 서버에 HTTPS가 잘 적용되는 지 확인하기
✅ 참고 문서