두 번의 실제 배포를 경험했었는데요. 처음엔 그냥 HTTP 통신으로 배포를 했습니다. 그런데 이게 보안과 SEO 관점에서 좋지 않다고 하더라구요.
그래서 두번째 배포 땐, TSL를 적용해서 HTTPS 통신으로 배포를 진행하였습니다.
개념적인 설명은 차후에 하도록 하겠습니다. 지금은 EC2 환경에서 Nginx를 통해 TSL를 만들어서 HTTPS 통신으로 바꿔볼게요.
$ sudo apt-get update -y & sudo apt-get install letsencrypt -y
# ngixn 중지
$ sudo systemctl stop nginx
$ sudo letsencrypt certonly --standalone -d [도메인이름]
$ sudo vim /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name [도메인 주소;]
return 301 https://$server_name$request_uri'
index index.html;
}
server{
listen 443 ssl;
listen [::]:443 ssl;
server_name [도메인 주소;]
ssl_certificate /etc/letsencrypt/live/도메인주소/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인주소/privkey.pem;
root /home/ubuntu/.../frontend/dist; #[프론트엔드 build해서 만들어진 dist폴더]
index index.html;
# 기본주소는 프론트엔드 index.html로 이동한다라고 선언
location / {
try_files $uri $uri/ index.html
# api로 url이 들어오면 nginx에서 api를 제거하고 서버로 보내주겠다!
location /api/ {
rewrite ^/api(/.*)$ $1 break;
includ proxy_params;
proxy_pass http://unix:/home/ubuntu/루트폴더명/루트폴더명.sock;
}
# static 관련해서는 staticfiles를 씁시다!
location /static/ {
alias /home/ubuntu/루트폴더명/staticfiles/;
}
}
#nginx 재실행
$ sudo systemctl start nginx
참고한 곳
관련된 내 글