살짝 미뤄뒀던 도메인 적용과 SSL 인증서 발급을 진행했다.
로드밸런서는 안쓰고(EC2 하나밖에 안쓰는데 로드밸런서가 굳이 필요할까..?), Let's Encrypt를 이용해 EC2 내부에서 SSL 인증서를 발급받아 적용하는 형식으로 진행했다.
가비아에서 도메인을 구입하자.
허지예.site
아래 처럼 설정해준다.
---------------------------------------------------
A | @ | <ec2 public ip 주소> | ~
---------------------------------------------------
A | WWW | <ec2 public ip 주소> | ~
---------------------------------------------------
도메인으로 접속했을때 EC2에서 띄워 둔게 보이면 도메인이 잘 연결된 것…!
아직 SSL 인증서 적용을 안해서 http://<도메인>:3000
등으로 접속했을때 보이면 된다.
이게 연결될 때까지 시간이 좀 걸리는데, https://dnschecker.org/ 여기에서 도메인을 검색하면 DNS에 잘 등록이 됐는지 확인할 수 있다.
Next.js 프로젝트가 3000번 포트로 실행되어 있는 상태에서 진행
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemxtl enable nginx
sudo vi /etc/nginx/conf.d/nextjs.conf
한글 도메인을 사용할 경우 punycode 인코딩한 결과를 적어주어야 한다.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xn--2j5b11e83n.site www.xn--2j5b11e83n.site;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
오류가 없는지 확인 (문법 오류를 확인할 수 있다)
sudo nginx -t
sudo systemctl reload nginx
sudo yum python3-certbot-nginx -y
sudo certbot --nginx
1: xn--2j5b11e83n.site
2: www.xn--2j5b11e83n.site
sudo yum install cronie -y
sudo systemctl start crond
sudo systemxtl enable crond
sudo crontab -e
이후 아래 줄을 추가해주자.
0 0 1 * * certbot renew --renew-hook="sudo systemctl restart nginx"