AWS 무료 티어를 활용한 포트폴리오 배포 및 HTTPS 설정
개요
AWS 무료 티어를 활용하여 포트폴리오 웹사이트를 배포하고, HTTPS를 적용하는 방법을 정리했습니다. 이 글에서는 EC2 인스턴스 설정부터 Route 53을 이용한 도메인 연결, 로드 밸런서와 CloudFront 설정, 그리고 보안 강화를 위한 WAF 적용까지 다룹니다.
1. AWS EC2에 포트폴리오 배포
1.1 EC2 인스턴스 생성
- AWS 콘솔에서 EC2 인스턴스를 생성합니다.
- Amazon Linux 2 또는 Ubuntu AMI를 선택합니다.
- 무료 티어를 유지하기 위해 t2.micro 인스턴스를 선택합니다.
- 보안 그룹에서 80번(HTTP), 443번(HTTPS), 22번(SSH) 포트를 엽니다.
- 생성된 인스턴스에 SSH로 접속합니다.
ssh -i your-key.pem ec2-user@your-ec2-ip
1.2 Node.js 및 Express 앱 배포
- 서버에서 Node.js를 설치합니다.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo yum install -y nodejs # Amazon Linux
- Express 기반의 포트폴리오를 배포합니다.
git clone https://github.com/your-repo/portfolio.git
cd portfolio
npm install
npm run build # 프론트엔드 빌드 (React/Vue 등 사용 시)
npm start
- PM2를 사용해 서버를 백그라운드에서 실행합니다.
npm install -g pm2
pm2 start server.js --name portfolio
pm2 save
pm2 startup
2. 도메인 연결 (Route 53)
2.1 도메인 구매 및 설정
- AWS Route 53에서 도메인을 구매합니다.
- 호스팅 영역(Hosted Zone)을 생성하고, A 레코드를 추가하여 EC2의 퍼블릭 IP를 연결합니다.
- 서브도메인(www)도 함께 설정하려면 CNAME 레코드를 추가합니다.
3. HTTPS 적용 (SSL/TLS 인증서)
3.1 AWS Certificate Manager (ACM)에서 SSL 인증서 생성
- AWS ACM에서 도메인 검증 방식으로 SSL 인증서를 생성합니다.
- Route 53에서 자동 검증을 선택하여 인증서를 활성화합니다.
4. 로드 밸런서(ALB) 설정
4.1 ALB 생성 및 EC2 연결
- Application Load Balancer(ALB)를 생성합니다.
- 대상 그룹(Target Group)을 생성하고 EC2 인스턴스를 추가합니다.
- 리스너 설정에서 HTTP(80) -> HTTPS(443) 리디렉션 규칙을 추가합니다.
5. CloudFront 설정
5.1 CloudFront 배포 생성
- CloudFront 배포를 생성하고, 원본(origin)으로 ALB를 설정합니다.
- HTTPS를 강제 적용하고, 캐싱 정책을 설정합니다.
- SSL 인증서를 적용하여 보안을 강화합니다.
6. Express에서 HTTPS 및 도메인 리디렉션 설정
6.1 HTTPS 강제 리디렉션
app.use((req, res, next) => {
if (!req.secure) {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
});
6.2 www 서브도메인으로 리디렉션
app.use((req, res, next) => {
if (req.headers.host === 'javierju.com') {
return res.redirect(301, 'https://www.javierju.com' + req.url);
}
next();
});
7. 보안 강화 (AWS WAF 설정)
7.1 WAF 웹 ACL 설정
- AWS WAF에서 Web ACL을 생성합니다.
- SQL Injection, XSS 공격 방어 규칙을 추가합니다.
- Web ACL을 CloudFront와 ALB에 연결합니다.
8. 결론
이제 AWS 무료 티어를 활용하여 포트폴리오를 HTTPS로 배포하고 보안을 강화하는 작업을 완료했습니다. 앞으로 CloudFront 캐싱 최적화 및 S3 연동도 도전해볼 계획입니다.
Leave a comment