리액트 EC2 Nginx HTTPS 적용(3)
한개의 사이트를 직접 배포해 보고 싶다는 생각에 시작하면서 배웠던 방법을 정리하는 글입니다.
깊은 내용에 대해서는 잘 모르고 쓰는 글임을 알려 드립니다.
이전글:
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
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