반응형
🚀 GCP VM + 가비아 도메인 HTTPS 연결 트러블슈팅 기록
문제 상황
- GCP VM에 Node.js 백엔드 서버를 배포하고, 가비아에서 구매한 도메인을 연결.
- Certbot으로 SSL 인증서를 발급했지만,
- Nginx 기본 페이지(Welcome to nginx!)가 뜨거나
- HTTPS 포트(443)가 열리지 않는 문제 발생.
1. SSL 인증서 발급
과정
- pm2와 Nginx 프로세스 중지
pm2 stop all
sudo systemctl stop nginx
- 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 |