레코드, CName과 A의 차이만 알면 쉽게 적용 가능
HTTPS를 적용하려면 SSL인증서를 구매해야하지만 무료이면서 간편하게 사용할 수 있는 Certbot을 사용하여 무료 발급 후 적용
다시 실행시키면 HTTPS -> HTTP 요청시 브라우저에서 차단하는 에러 발생 (Mixed content)
프론트에는 HTTPS가 적용되었지만 백엔드에서는 안되어있음
생각해보니 Nginx에서 proxy_pass를 사용하는거라 백엔드가 HTTP이여도 상관없지 않을까란 생각이 들었고 프론트엔드 설정파일(.env)에 백엔드 경로가 http://서버IP주소
로 되어있어 https://서버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
}