카테고리 없음

NGINX 와 letsencrypt / 도메인 설정 및 SSL 적용하기

한둥둥 2024. 2. 14. 22:24

1. nginx 설치 확인 

sudo apt update
sudo apt install nginx

 

2. nginx 작동 확인

 

가비아에서 도메인 구매 

 

 

가비아 - 레코드 설정 

My가비아 > DNS 관리 툴 > 설정 > 레코드 수정 

레코드 수정을 눌러 추가 입력 공간에는 인스턴스 IP주소를 넣어준다. 

 

> 타입에 따른 DNS 설정 

 

  • A 레코드 (서브 도메인 생성)
    • A 레코드를 추가하면 서브 도메인을 생성하여 IP로 사이트를 연결할 수 있다. 
  • MX레코드 (메일 설정)
    • 메일 연결에 사용됩니다. 입력된 정보를 변경/삭제할 경우 해당 서비스 사용이 변경/중단 될 수 있으니, 설정한 메일 정보를 반드시 확인
    • MX 설정 시 메일 호스트 주소 입력 내용 끝에 ".(마침표)"를 입력하셔야 정상 세팅 됩니다.
    • 예) kr1-aspmx1.worksmobile.com.
  • CNAME 레코드
    • CNAME 정보는 메일, 블로그 연결 등에 사용됩니다. 입력된 정보를 변경/삭제할 경우 해당 서비스 사용이 변경/중단될 수 있으니, 설정한 메일 정보를 반드시 확인하세요. 
    • 한글 도메인은 사용 업체에 따라 추므ㄸ을 설정하더라도 메일을 지원하지 않을 수 있다. 
  • TXT레코드
    • SPF 레코드를 입력하고자 하는 경우 위 TXT레코드란에 입력해주세요.
    • 사용하는 도메인이 스팸으로 차단되는 것을 방지하기 위하여 SPF 레코드 등록을 권장
  • SRV레코드
    • SRV 레코드 설정 시, 대상 값 입력 내용 끝에 "."을 입력해야 정상 세팅 

 

3. nginx - /etc/nginx/sites-available에 설정 파일 생성 

  • nginx 설정 파일은 /etc/conf/nginx.conf에 존재합니다.
  • conf파일 안에는 include로 파일을 가져옵니다. 해당 파일에서 분리하여 세팅하지 않을 시, 에러가 발생합니다. 
  • sites-enabled의 파일들은 sites-available의 파일들을 심볼릭 링크하여 사용합니다. 이에 대한 내용은 default.conf를 열어보면 영어로 적혀있습니다. 

설정 파일 생성 

vi /etc/nginx/sites-available/도메인명 
vi /etc/nginx/sites-available/photocard.site

 

설정 파일 

server{
        listen 80;
        listen [::]:80;
        ssl on;
        server_name photocard.site www.photocard.site;

        location / {
                return 307 https://photocard.site$request_uri;
        }
}

 

심볼릭 링크란?

  • 링크를 연결해 원본 파일을 직접 사용하는 것과 같은 효과를 내는 링크
  • Windows의 바로가기와 유사한 개념
  • 특정 폴더에 링크를 걸어 NAS, library 원본 파일을 사용하기 위해 사용

nginx.conf의 일부

 

 

4.  nginx - /etc/nginx/sites-enabled에 심볼릭 링크 생성 

sudo ln -s /etc/nginx/sites-available/3에서 생성한 파일명 /etc/nginx/sites-enabled/3에서 생성한파일명

 

 

5.  nginx - 설정 파일 확인 

sudo nginx -t

 

6. nginx - 재시작 

apt-get update
sudo apt-get install certbot
apt-get install python3-certbot-nginx

 

 

4. SSL 적용

1. certbot 설치 

  • Ubuntu 18.04 이하: python-certbot-nginx 설치
  • Ubuntu 18.04 이상: python3-certbot-nginx 설치 
apt-get update
sudo apt-get install certbot
apt-get install python3-certbot-nginx

 

2. SSL/TLS 인증서 발급 

  • -d 도메인을 나열해 여러 도메인에 대해 인증서 발급 가능
  • 해당 명령어 실행 후 아까 추가했던 설정 파일(/etc/nginx/sites-available/도메인명)을 보면 '# manage by Certbog' 주석이 달린 코드들이 추가된 것을 볼 수 있음
$ sudo certbot --nginx -d 도메인

 

sudo service nginx restart 

 

도메인은 90일마다 풀리기 때문에 인증을 재설정해주어야 한다. 그러기 위해서는 리눅스에 crontab을 사용해서 자동화하자. 

 

0 0 * * * certbot renew --post-hook "sudo service nginx reload"

 

사용해서 자동화하였다.