독학/[etc] 개발 관련 내용 정리

[배포🌏] Nginx와 Certbot(Let's Encrypt)를 이용한 https 배포

최연재 2025. 6. 16. 07:54

시스템종합설계 수업에서 개발한 프로젝트에 대해 보안을 향상하기 위해 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; 
        // ... 설정들
    }
}

https로 접속되는 것을 확인할 수 있습니다!

 

💭 후기

사실 http 배포할 때마다 자잘한 이슈가 있었어서 그런지 개인적으로 걱정을 많이 했습니다. 다행히 기본 세팅이다보니 생각보다 훨씬 쉽고 간단해서 금방 끝났습니다.  

 

현재 상황을 반영한 백엔드 시스템 아키텍쳐는 다음과 같습니다.