본문 바로가기

DevOps/AWS

[AWS] HTTPS 연결 시 ELB vs Nginx, Certbot

✅ HTTPS 연결 시 ELB vs Nginx, Certbot

HTTPS를 연결하는 방법을 검색해보면 ELB 뿐만 아니라 Nginx, Certbot을 활용하는 방법도 많이 나온다.

현업에서는 어떤 방법을 더 많이 사용할까?

 

 

현업에서는 ELB를 활용해서 HTTPS 적용을 더 많이 시킨다. HTTPS 설정도 쉬울 뿐더러 HTTPS 인증서의 만료기간 갱신도 자동으로 해주기 때문이다.

 

그러면 Nginx는 왜 사용하는 걸까?

 

 

Nginx와 Certbot을 활용해서 HTTPS를 적용시키는 가장 큰 이유는 비용 때문이다. HTTPS를 적용하는 데 일절 비용이 들지 않기 때문이다. 반면 ELB는 사용하는 것 자체로써 비용이 나간다. 따라서 비용이 부담스러운 기업 또는 학생 입장에서는 ELB를 사용하지 않고 백엔드 서버와 Nginx, Certbot를 하나의 EC2에 설치해서 사용하는 경우도 많다.

 

 

ELB 도입 전 아키텍처
ELB 도입 후 아키텍처

 

 

📖 Nginx, Certbot을 활용해 HTTPS 연결하기

 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가 잘 적용되는 지 확인하기

 

 

 

 

 

 참고 문서

https://ubuntu.com/tutorials/install-and-configure-nginx#3-creating-our-own-website

https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal

 

Certbot Instructions

Certbot Instructions

certbot.eff.org