Super Kawaii Cute Cat Kaoani
본문 바로가기
{Lecture}/Capstone design

[캡스톤디자인] Spring 서버 Https 설정 및 DNS 연결 - GCP

by wonee1 2026. 5. 20.
728x90

 

 

캡스톤디자인을 하면서 https 설정과 dns 연결을 진행했습니다. 기존에 aws에서도 진행했었는데  GCP에서는 처음 해봤기에 글로 정리해봤습니다.

 

AWS에서 설정 👇

https://studycodinging.tistory.com/187

 

[Draconist] HTTPS 설정하기

✏️본 포스트는 HTTPS 설정하는 과정을 기록한 것입니다. 또한 본 글은 다음 포스트를 참고하였습니다! https://turtle0204.tistory.com/entry/08-https-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0-Draconis

studycodinging.tistory.com

 

 

 

 

1단계 가비아에서 도메인 구매

gabia.com에 접속하여 원하는 도메인을 검색합니다. .com 기준 연 약 15,000원이며, .site 등 다른 TLD는 가격이 상이할 수 있습니다. 구매 완료 후 My가비아에서 도메인이 등록된 것을 확인합니다.

 

  1. gabia.com 접속
  2. 원하는 도메인 검색 후 구매 (.com 기준 연 ~15,000원)

 

 

 

2단계 GCP Cloud DNS 영역 생성

 

GCP는 도메인을 직접 구매할 수 없기 때문에 외부에서 구매한 도메인을 GCP Cloud DNS와 연결해야 합니다. Cloud DNS는 DNS 쿼리를 처리하는 GCP의 관리형 DNS 서비스입니다.

 

GCP 콘솔 → Cloud DNS영역 만들기

 


영역 유형 공개
DNS 이름 yourdomain.com
영역 이름 아무거나 (예: my-zone)

나머지 설정은 기본값으로 두고 생성합니다.

💡 영역 이름은 GCP 내부에서만 사용하는 식별자로, DNS 동작에 영향을 주지 않습니다.

 

 

3단계- NS 레코드 확인

영역 생성 후 레코드 모음 탭에서 자동 생성된 NS(네임서버) 레코드를 확인합니다. NS 행을 클릭하면 아래와 같이 4개의 네임서버 값이 표시됩니다.
ns-cloud-a1.googledomains.com.
ns-cloud-a2.googledomains.com.
ns-cloud-a3.googledomains.com.
ns-cloud-a4.googledomains.com.

 

이 4개의 값을 복사해둡니다. 영역마다 네임서버 값이 다를 수 있으므로 반드시 본인의 GCP 콘솔에서 확인해야 합니다.

 

4단계 가비아에 네임서버 등록

 

가비아 로그인 후 My가비아 → 도메인 관리로 이동합니다. 구매한 도메인을 클릭한 후 네임서버 설정에 진입합니다.

기존에 등록된 가비아 기본 네임서버를 모두 삭제하고, 3단계에서 복사한 GCP NS 4개를 입력 후 저장합니다.

 

  1. 가비아 로그인 → My가비아 → 도메인 관리
  2. pick-it.site 클릭 → 네임서버 설정
  3. 복사한 NS 4개 입력 후 저장

 

이때 GCP NS 레코드 끝에 붙는 .(점)은 제거하고 입력해야 합니다.

  •  ns-cloud-a1.googledomains.com. (X) 
  • ns-cloud-a1.googledomains.com (o)

 

 

5단계 A 레코드 추가 (GCP Cloud DNS로 돌아와서)

 

표준 추가를 클릭합니다. 

 

DNS 이름 DNS 이름
유형 A
TTL 300
IPv4 GCP VM 외부 IP

www도 추가하려면 DNS 이름을 www.도메인 이름  으로 하나 더 추가하면됩니다.  

 

 

 

 

 

6단계 GCP 방화벽 열기 

HTTPS 연결을 위해 80(HTTP)과 443(HTTPS) 포트를 열어줘야 합니다. VM SSH 터미널에서 아래 명령어를 실행합니다.

 

gcloud compute firewall-rules create allow-http-https \
  --allow tcp:80,tcp:443 \
  --target-tags http-server,https-server

 

 

 

또는 GCP 콘솔 VPC 네트워크 → 방화벽 → 방화벽 규칙 만들기에서 아래와 같이 설정합니다.

 

트래픽 방향 수신 (Ingress)
작업 허용
소스 IP 0.0.0.0/0
프로토콜/포트 TCP 80, 443

 

 

 

 

7단계 HTTPS 인증서 발급 (Let's Encrypt)

 

Let's Encrypt는 무료로 SSL 인증서를 발급해주는 서비스입니다. Certbot을 사용하면 Nginx 설정까지 자동으로 처리해줍니다.

VM SSH 터미널에서 아래 명령어를 순서대로 실행합니다.

 

VM에 SSH 접속 후 다음과 같이 명령어를 입력합니다. 

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

sudo certbot --nginx -d pick-it.site​

 

실행하면 이메일 입력과 약관 동의를 요청합니다. 이메일은 인증서 만료 알림 수신용으로 사용되며 어떤 이메일이든 상관없습니다. 약관 동의 후 인증서가 자동 발급됩니다.

⚠️ 인증서 발급 전에 DNS 전파가 완료되어야 합니다. 네임서버 변경 후 최대 24~48시간 소요될 수 있다고 합니다 (근데 금방 되는 편인듯??)

 

Let's Encrypt 인증서는 90일마다 만료되며, Certbot이 자동 갱신을 설정해줍니다. 아래 명령어로 자동 갱신이 정상 동작하는지 테스트할 수 있습니다.

 

8단계 Nginx 설정 

 

 

인증서 발급이 완료되면 Certbot이 /etc/nginx/sites-available/default 파일을 자동으로 수정합니다. 그러나 Spring Boot 앱으로 요청을 프록시하려면 location / 블록을 직접 수정해야 합니다.

 

sudo nano /etc/nginx/sites-available/default

 

443 서버 블록의 location / 부분을 아래와 같이 수정합니다.

# 수정 전
location / {
    try_files $uri $uri/ =404;
}

# 수정 후
location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

 

 

 

 

 

수정 후 Nginx 설정을 검증하고 재시작합니다.

 

sudo nginx -t          # 설정 문법 검사
sudo systemctl reload nginx   # Nginx 재시작

 

 

정상적으로 완료되면 https://도메인 으로 접속 시 Spring Boot 앱과 연결됩니다.

 

 

728x90