시스템종합설계 수업에서 개발한 프로젝트에 대해 보안을 향상하기 위해 https로도 배포하고 https로만 통신하고자 계획을 세웠습니다. 배포 과정에 대해 소개하고자 합니다.
🔗 0. 도메인 구매
https를 이용하기 위해서는 먼저 도메인을 가지고 있어야 합니다. 저는 가비아에서 구매했습니다.
🔩 1. 가비아 설정
가비아 도메인 관리페이지에서 A 레코드에 EC2 퍼블릭 IP를 입력합니다.

🧭 2. Nginx 설치
sudo apt update
sudo apt install nginx -y
sudo systemctl status nginx

🧱 방화벽 설정
SSH 연결을 유지하면서 방화벽을 켜줍니다.
sudo ufw allow ssh
sudo ufw enable
🔒 3. certbot (Let\s Encrypt) 설치
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

✍️ 4. /etc/nginx/sites-available/default 파일 수정
기존 서버 설정이 IP 기반 http 서비스만 제공할 경우 외부 도메인으로 접근할 수 있도록 프록시 설정을 진행합니다.
또한 HTTPS(SSL) 인증서를 적용한 보안 연결 설정을 위해 listen 443 ssl 등을 추가합니다.
server {
listen 80;
listen [::]:80;
server_name 도메인.com www.도메인.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 도메인 www.도메인;
//... 설정들
location / {
proxy_pass http://localhost:8080;
// ... 설정들
}
}

💭 후기
사실 http 배포할 때마다 자잘한 이슈가 있었어서 그런지 개인적으로 걱정을 많이 했습니다. 다행히 기본 세팅이다보니 생각보다 훨씬 쉽고 간단해서 금방 끝났습니다.
현재 상황을 반영한 백엔드 시스템 아키텍쳐는 다음과 같습니다.

'독학 > [etc] 개발 관련 내용 정리' 카테고리의 다른 글
| [배포🌎] AWS EC2, GitHub Action, Docker compose를 이용한 CI/CD 자동화 (2) (0) | 2025.05.18 |
|---|---|
| [배포🌎] AWS EC2, GitHub Action, Docker compose를 이용한 CI/CD 자동화 (1) (0) | 2025.05.18 |
| [redis⚡] redis 접근 오류 해결 기록 (0) | 2025.05.18 |
| [😎SwaggerHub] 협업을 위한 SwaggerHub 이용하기 (0) | 2024.12.16 |
| [😎Swagger] 스프링 프로젝트 swagger 세팅하기 (1) | 2024.12.16 |