[BookTalk 팀프로젝트 트러블슈팅 4] 백엔드 배포) gcp vm(Debian Linux) <- 가비아 도메인(HTTPS) 연결

2025. 9. 2. 18:00·개발공부/error.log
반응형

🚀 GCP VM + 가비아 도메인 HTTPS 연결 트러블슈팅 기록

문제 상황

  • GCP VM에 Node.js 백엔드 서버를 배포하고, 가비아에서 구매한 도메인을 연결.
  • Certbot으로 SSL 인증서를 발급했지만,
    1. Nginx 기본 페이지(Welcome to nginx!)가 뜨거나
    2. HTTPS 포트(443)가 열리지 않는 문제 발생.

1. SSL 인증서 발급

과정

  1. pm2와 Nginx 프로세스 중지
pm2 stop all
sudo systemctl stop nginx
  1. Certbot으로 인증서 발급
sudo certbot certonly --standalone -d example.com

✅ 인증서(fullchain.pem)와 개인키(privkey.pem)가 정상 발급됨.


2. Nginx HTTPS 설정

  • /etc/nginx/sites-available/booktalk 에 SSL 설정 추가
server {
    listen 80;
    server_name example.com api.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com api.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}

 

 


3. 권한 문제 (Permission denied)

  • Nginx가 인증서 파일에 접근할 권한이 없어서 443 포트 리스닝 실패.
sudo -u nginx cat /etc/letsencrypt/live/example.com/fullchain.pem
# → Permission denied
 

해결 방법

  • 상위 디렉토리 권한 조정
sudo chmod 750 /etc/letsencrypt/live
sudo systemctl restart nginx

 


4. Nginx 기본 페이지 노출 문제

  • 원인: 중복된 서버 블록(conf.d와 sites-enabled) → Nginx가 기본 경로( /usr/share/nginx/html )만 우선 적용.

해결 방법

1. conf.d에 있던 중복 설정 제거

sudo mv /etc/nginx/conf.d/booktalk.conf /etc/nginx/conf.d/booktalk.conf.bak

2. nginx.conf에 sites-enabled 포함 추가

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

✅ 이후 nginx -t → 정상, ss -tulwn | grep 443 → 443 포트 오픈 확인


5. HTTP → HTTPS 리다이렉션

  • http://example.com 접속 시에도 자동으로 HTTPS로 이동 확인

6. 프론트엔드 환경변수 수정

  • 기존 API 주소를 VM IP로 쓰던 부분을 도메인으로 교체
- url: 'http://35.xxx.xxx.xxx'
+ url: 'https://example.com'
✅ Swagger API 문서 및 프론트엔드 요청 정상 응답 확인


최종 결과

1. HTTPS 인증서 발급 및 적용 성공

2. HTTP 요청도 HTTPS로 리다이렉션 정상 작동

3. 프론트엔드와 백엔드 통신 정상화


📌 트러블슈팅 포인트

  • SSL 인증서 발급 시 Nginx/pm2 충돌 방지 위해 프로세스 중지 필요
  • 디렉토리 권한 문제로 Nginx가 인증서 접근 불가 → 권한 조정 필요
  • 중복된 Nginx 서버 블록(conf.d vs sites-enabled) 문제 → 불필요한 설정 제거
  • 프론트엔드 환경변수까지 HTTPS로 교체해야 완전한 배포 가능
저작자표시 비영리 변경금지 (새창열림)

'개발공부 > error.log' 카테고리의 다른 글

[BookTalk 팀프로젝트 트러블슈팅3] gcp db 간헐적으로 사라지는 원인은 랜섬웨어 였다.  (1) 2025.08.18
[TIL] gcp Cloud SQL 랜섬웨어 복구중 - VM, VPC네트워크, 서브넷 생성 근데 이게 뭘까?  (3) 2025.08.13
[BookTalk 팀프로젝트 트러블슈팅2] 구글클라우드 인스턴스 내 데이터베이스가 매일 사라지는 사건 2!재발생!  (3) 2025.08.04
[BookTalk 팀프로젝트 트러블슈팅1] 구글클라우드 인스턴스 내 데이터베이스가 매일 사라지는 사건  (3) 2025.08.01
[TIL]우와... JavaScript 클래스 에서 계속 ts 에러 뜨던거 2시간동안 챗쥐피티랑 씨름하면서 해결 못한거 멘토님이 해결함  (2) 2024.09.12
'개발공부/error.log' 카테고리의 다른 글
  • [BookTalk 팀프로젝트 트러블슈팅3] gcp db 간헐적으로 사라지는 원인은 랜섬웨어 였다.
  • [TIL] gcp Cloud SQL 랜섬웨어 복구중 - VM, VPC네트워크, 서브넷 생성 근데 이게 뭘까?
  • [BookTalk 팀프로젝트 트러블슈팅2] 구글클라우드 인스턴스 내 데이터베이스가 매일 사라지는 사건 2!재발생!
  • [BookTalk 팀프로젝트 트러블슈팅1] 구글클라우드 인스턴스 내 데이터베이스가 매일 사라지는 사건
d0yclub
d0yclub
2024.06.17 open
  • d0yclub
    개발꿈나무 김도이
    d0yclub
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • 서재 (0)
      • 2024 (13)
        • [FE]Next.js2기 (6)
        • [FE]우아한테크코스7기-프리코스 (6)
      • 개발공부 (25)
        • HTML CSS (6)
        • JavaScript (2)
        • React.js (4)
        • DB - mySQL (0)
        • error.log (8)
      • 2025 (32)
        • 멋쟁이사자처럼 프론트엔드스쿨플러스 4기 (1)
        • [풀스택]SeSAC 웹개발자 7기 (29)
        • 개인프로젝트 (1)
        • 팀프로젝트 (1)
      • 자료구조&알고리즘 풀이 (3)
        • 프로그래머스 (2)
      • 2026 (0)
        • [AI]SeSAC microsoft AI엔지니어 .. (0)
        • 개인프로젝트 (0)
        • 팀프로젝트 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부트캠프
    Next.js
    DTO
    GCP
    EC2
    팀프로젝트
    유데미
    TIL
    트러블슈팅
    프론트엔드개발자양성과정
    KPT
    미래내일일경험
    배느실
    RDS
    회고
    udemy
    웅진씽크빅
    프로젝트캠프
    스나이퍼팩토리
    KPT회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
d0yclub
[BookTalk 팀프로젝트 트러블슈팅 4] 백엔드 배포) gcp vm(Debian Linux) <- 가비아 도메인(HTTPS) 연결
상단으로

티스토리툴바