개발/리액트 배포

리액트 EC2 Nginx HTTPS 적용(3)

sungin95 2023. 9. 20. 13:53

한개의 사이트를 직접 배포해 보고 싶다는 생각에 시작하면서 배웠던 방법을 정리하는 글입니다.

깊은 내용에 대해서는 잘 모르고 쓰는 글임을 알려 드립니다.

 

이전글:

https://plants-growth.tistory.com/31

 

 

지난 시간까지 Nginx를 적용하여 80번 포트를 사용하여 서버를 배포하는 것까지 해 보았습니다. 

이번에는 HTTPS 적용 및 관련 Nginx 설정 변경에 대해 다루어 보겠습니다. 

 

3. HTTPS 를 적용한 443 사용하는 방법 ex) www.도메인.com

  • certbot를 활용 무료로 https인증 받기
  • Nginx추가 설정

 

certbot선택 이유 및 주의사항

certbot 선택 이유

HTTPS 적용을 위해서는 SSL 인증서를 발급 받아야 하는데. 저는 certbot에서 진행하겠습니다.(간단하면서 무료입니다.)

https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal 

 

Certbot Instructions

Tagline

certbot.eff.org

 

aws에서도 SSL 인증서를 받을 수 있는데. 인증서 발급 후 로드밸런스 등을 추가로 적용을 해 줘야 인증서를 사용 할 수 있는습니다. 번거롭기도 하고 매달 10달러 정도 지불해야 한다고 해서 사용 안했습니다. 

 

주의사항

만약 애플리케이션 및 OS 이미지(Amazon Machine Image)를 ubuntu 를 선택 안했으면 명령어가 다를 수도 있습니다. 

 

사전에 도메인을 미리 구매해 주세요

AWS에서 기본으로 제공해 주는 주소는 인증서 발급이 안되네요ㅠ

이 다음을 진행을 위해서는 도메인을 구매해 주세요. 워낙에 사이트도 많고 좋은 블로그도 많아서 여기서는 다루지 않겠습니다. 

 

구매후 server_name 을 바꾸어 주세요. 

$ sudo vi /etc/nginx/sites-available/default

server {
        listen 80;
        server_name www.gpt-is-interviewer.me; # 예시
        ....

 

Certbot 설치

그후 Certbot를 설치해 주세요. 

sudo snap install --classic certbot

 

인증서 발급 요청하기

sudo certbot --nginx

이메일 주소 입력해 주시고 Y, Y, 마지막으로 서버이름을 선택해 주시면 됩니다. 

이메일 주소로는 certbot에서 메일이 옵니다.(영어라서 읽지는 않았습니다.)

출처: 카레유님 블로그

그리고 이곳에 정보가 저장이 됩니다. 

출처: 카레유님 블로그

 

Nginx 추가 설정

 

$ sudo vi /etc/nginx/sites-available/default

server {
        listen 80;
        server_name www.example.com; # 서버 이름
        rewrite        ^ https://$server_name$request_uri? permanent; # 추가
}

# 추가
server {
        listen 443 ssl;
        server_name www.gpt-is-interviewer.me;
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

        location / {
                root /home/ubuntu/random-sellect-frontend/build; # build 파일 위치
                index index.html index.htm;
                try_files $uri $uri/ /index.html;
        }

80번 포트로 가도 443 포트로 가도록 설정을 해 주고

ssl_certificate, ssl_certificate_key 값을 저장된 값에 맞추어 바꾸어 줍니다. 

 

Nginx를 재시작해 자물쇠 이모티콘이 생겼으면 성공입니다. 

$ sudo systemctl restart nginx

 

자동 갱신 확인

마지막으로 Certbot은 3개월마다 자동 갱신 되는 되요. 이게 잘 작동되나 확인을 하시려면 아래 명령어를 입력해 주세요.

$ sudo certbot 갱신 --dry-run

success 가 나오면 성공입니다.

 

 

저의 긴 글을 봐주셨어 감사합니다. 

열심히 작성했는데. 다시 보니 뭐가 부족한 느낌이 드네요. 

 

나도 블로그 잘 쓰고 싶다...

 

참조

https://curryyou.tistory.com/510

https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal