도메인 연결과 SSL 인증서 적용 (feat. 한글 도메인 사용하기)

허지예·2024년 8월 19일
1

개인 프로젝트 기록

목록 보기
17/17

살짝 미뤄뒀던 도메인 적용과 SSL 인증서 발급을 진행했다.

로드밸런서는 안쓰고(EC2 하나밖에 안쓰는데 로드밸런서가 굳이 필요할까..?), Let's Encrypt를 이용해 EC2 내부에서 SSL 인증서를 발급받아 적용하는 형식으로 진행했다.


가비아에서 도메인 구입

가비아에서 도메인을 구입하자.

  • 난 좀 튀고 싶어서 한글 도메인을 구입했다. 허지예.site
  • 1년에 2090원으로 구입했다👍

(1) DNS 관리 설정

아래 처럼 설정해준다.

---------------------------------------------------
A    |  @    | <ec2 public ip 주소>  | ~
---------------------------------------------------
A    |  WWW  | <ec2 public ip 주소>  | ~
---------------------------------------------------

(2) 연결됐는지 확인하기

도메인으로 접속했을때 EC2에서 띄워 둔게 보이면 도메인이 잘 연결된 것…!

아직 SSL 인증서 적용을 안해서 http://<도메인>:3000 등으로 접속했을때 보이면 된다.

이게 연결될 때까지 시간이 좀 걸리는데, https://dnschecker.org/ 여기에서 도메인을 검색하면 DNS에 잘 등록이 됐는지 확인할 수 있다.

80번 포트 요청을 3000번 Next.js 앱으로 프록시

Next.js 프로젝트가 3000번 포트로 실행되어 있는 상태에서 진행

(1) nginx install

sudo yum install nginx -y
sudo systemctl start nginx
sudo systemxtl enable nginx

(2) /etc/nginx/conf.d/nextjs.conf 설정 파일 작성

  • HTTP(포트 80)로 들어오는 요청을 Next.js 애플리케이션이 실행되고 있는 3000번 포트로 프록시하는 설정
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

(3) nginx 재시작

sudo systemctl reload nginx

Let's Encrypt를 활용해 SSL 인증서 발급받기

sudo yum python3-certbot-nginx -y
sudo certbot --nginx
  • 이후, 이메일 입력하고 약관 동의를 한다.
  • 그 다음 어떤 도메인에 대해 인증서를 발급할 건지, 앞에 설정을 잘 작성했다면 아래처럼 도메인 목록이 뜰 것이다.
    1: xn--2j5b11e83n.site
    2: www.xn--2j5b11e83n.site
    • 만약 목록이 안뜨면 설정을 다시 확인하자.
    • 여기서 공백을 입력하면 목록에 있는 모든 도메인을 대상으로 인증서를 발급하게 된다.

매월 1일마다 인증서 재발급하기

(1) cron 설치 & 시작

sudo yum install cronie -y
sudo systemctl start crond 
sudo systemxtl enable crond 

(2) crontab 설정

sudo crontab -e

이후 아래 줄을 추가해주자.

0 0 1 * * certbot renew --renew-hook="sudo systemctl restart nginx"
profile
대학생에서 취준생으로 진화했다가 지금은 풀스택 개발자로 2차 진화함

0개의 댓글

관련 채용 정보