EC2 https로 배포하기 (Nginx SSL 인증서)

icebox127·2026년 6월 30일

기본적으로 EC2에 서버를 배포하면 http://EC2_IP:8080 형식이다.
하지만 프론트 배포/소셜 로그인 사용 시 경로가 https여야 하기에 수정하였다.

1. 도메인 구하기

.com으로 끝나는거 아니면 대체로 저렴하지만, 서버 도메인이라 무료로 사용하고 싶어서 https://www.duckdns.org/domains 사이트를 활용했다.

duckdns 사이트 사용 방법
1. 회원가입
2. 도메인 이름 설정 -> add domian 클릭
3. IP 수정 -> update ip 클릭

2. Nginx 설정

Nginx는 고성능 오픈 소스 웹 서버이자 리버스 프록시, 로드 밸런서, 캐시 서버 역할을 수행하는 소프트웨어다.
SSL인증서를 사용해 웹사이트를 HTTPS로 열 수 있게끔 지원한다.

1. Nginx 설치

Nginx는 80, 443 포트에서 요청을 받는 웹 서버 역할이다.

sudo apt update
sudo apt install nginx -y

2. Cerbot 설치

인증서를 발급받기 위해 cerbot을 설치한다.

sudo apt install certbot python3-certbot-nginx -y

3. Nginx 도메인 설정

443 포트와 도메인을 연동하여 Nginx를 Spring Boot을 연결한다.

  • server_name: 해당 이름(주소)의 요청을 이 설정으로 처리
server {
    listen 80;
    server_name example.duckdns.org; //아까 만든 도메인

    location / {
        proxy_pass http://localhost:8080;
    }
}

4. 인증서 발급

Certbot으로 SSL 인증서를 발급 받는다.

sudo certbot --nginx -d git-turl.duckdns.org

이렇게 하면 https 주소가 생성된다.
(인증서 유효 기간은 90일로, 이후 자동 갱신된다.)

3. AWS 보안그룹 설정 추가

자 이제 실행해보면 ~

응답 시간이 오래 걸리는 오류가 난다.

AWS 콘솔에서 EC2 → 인스턴스 → Security → Security Groups → Inbound rules에 https 규칙을 추가해줘야 한다.

  • ssh: 서버 셸 접근 시 필요
  • https: https 접근 시 필요
  • http: http 접근 시 필요 (http로 설정해도 자동으로 https 전환됨)
  • 사용자 지정 TCP: 특정 포트 접속 시 필요 (기존 http://EC2_IP:8080 에 직접 접근을 위함. 현재는 https를 사용할거라 삭제함)

정리

  • 이전 구조
	브라우저
      │
http://54.xxx.xxx.xxx:8080 (EC2 IP 8080포트로 직접 접속)
      │
Spring Boot 실행
  • 현재 https 도메인 적용 결과
	브라우저
      │
https://git-turl.duckdns.org (443)
      │ 
     Nginx
      │
localhost:8080 (배포 서버 기준 로컬 = http://54.xxx.xxx.xxx:8080)
      │
Spring Boot

결과

https 경로로도 잘 작동된다

profile
감자의 공부기록🥔

0개의 댓글