본문 바로가기
Back-End/Infra

"ec2 + pm2 + nginx"를 활용해서 node.js 배포하기 (5)

by 천릉객 2023. 9. 13.

5. 도메인 설정 및 HTTPS로 배포설정 변경

배포를 하고나니,

도메인이 있었으면 좋겠고,

도메인 설정을 하고나니,

HTTPS로 접속하고 싶었다.

도메인 설정

도메인은 가비아에서 1년에 1700원 .site 도메인을 구매

이 4개의 값을

이렇게 네임서버에 곱게 넣어주면 된다. (네임서버 : IP와 도메인 이름을 이어주는 역할)

1~4차에 넣은 저 값들은 AWS Route 53을 통해 제공되는 호스트 네임.

HTTPS 설정

1. 리버스 프록시 설정

  • 기존 sites-enabled에서 관리하던 설정을 conf.d로 이전
  • proxy_set_header X-Real-IP $remote_addr; = X-Real-IP 헤더 설정
    : 리버스 프록시를 통과한 요청의 실제 클라이언트 IP주소를 저장. 백엔드 서버에서 원격 클라이언트의 IP주소 식별 가능
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; = X-Forwarded-For 헤더 설정
    : 클라이언트와 중간 프록시 서버 간의 연결 경로에 있는 모든 IP 주소 나열
  • proxy_set_header Host $http_host; = Host 헤더 설정
    : 원래 요청에서 받은 호스트 헤더 값을 보존
  • location { } 이후 코드 : certbot 을 통해 ssl 인증서 발급시 자동으로 추가된 부분

Certbot 설치 & SSL 인증서 발급 (by Let's Encrypt)

  • 명령어 정리
    • sudo snap install certbot --classic
    • sudo certbot --nginx

SSL 인증서 자동 갱신  (.with Crontab)

Let's Encrypty에서 발급해주는 ssl 인증서는 90일 만료

-> Crontab을 통해 자동화

  • 명령어 정리
    • crontab -e
    • 이후 vim으로 선택
    • 끝에 0 0  * * * certbot renew --post-hook "sudo service nginx reload" 추가 : 자동 갱신

참고

도메인 설정 : https://thalals.tistory.com/409

HTTPS 설정 : https://hudi.blog/https-with-nginx-and-lets-encrypt/