카테고리 없음
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"
사용해서 자동화하였다.