[배포][ProPro] 도메인 및 HTTPS

jiseong·2022년 4월 21일
0

T I Learned

목록 보기
227/291

도메인 적용

레코드, CName과 A의 차이만 알면 쉽게 적용 가능

HTTPS 적용

  • HTTPS를 적용하려면 SSL인증서를 구매해야하지만 무료이면서 간편하게 사용할 수 있는 Certbot을 사용하여 무료 발급 후 적용

  • 다시 실행시키면 HTTPS -> HTTP 요청시 브라우저에서 차단하는 에러 발생 (Mixed content)

  • 프론트에는 HTTPS가 적용되었지만 백엔드에서는 안되어있음

  • 생각해보니 Nginx에서 proxy_pass를 사용하는거라 백엔드가 HTTP이여도 상관없지 않을까란 생각이 들었고 프론트엔드 설정파일(.env)에 백엔드 경로가 http://서버IP주소로 되어있어 https://서버IP주소로 수정

  • 새로운 에러인 NET::ERR_CERT_COMMON_NAME_INVALID 발생
  • SSL인증을 IP가 아닌 도메인에 대해 해줬기 때문에 프론트엔드 설정파일(.env) 파일의 서버주소를 IP가 아닌 도메인이름(https://서버도메인)으로 변경하고나니 정상적으로 동작

인증서 자동갱신

이전에 사용해봤던 적이 있어 동일하게 crontab를 사용하여 자동갱신도 적용

최종코드

구매한 도메인 예시: test.kr

server {
  server_name test.kr www.test.kr;
  
  location /api/ {
    proxy_pass http://127.0.0.1:4000/;
  }
  
  location / {
    root   /home/ec2-user/frontend/dist;
    index  index.html index.htm;
    try_files $uri /index.html;
  }

  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/propro.kr/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/propro.kr/privkey.pem; # managed by Certb
  ot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}


server {
  if ($host = www.test.kr) {
  	return 301 https://$host$request_uri;
  } # managed by Certbot

  if ($host = test.kr) {
	return 301 https://$host$request_uri;
  } # managed by Certbot


  server_name test.kr www.test.kr;
  listen 80;
    return 404; # managed by Certbot
}

Reference

0개의 댓글