0. 개발환경 (2024년 12월 기준)
- 네이버클라우드 [NCP] VPC 서버
- Ubuntu 22.04
- Python 3.10
1. 시작에 앞서 - NCP에 Nginx 설치
본 글은 NCP에 Nginx가 설치 된 것을 가정으로 한 글입니다.
NCP에 Nginx 설치 및 에러 처리 과정은 아래의 글을 우선 참조하시고 본 글을 참고 하시기 바랍니다.
링크: [Nginx] Ubuntu 22.04에서 Nginx 설치 및 관련 에러 해결 — 써니의 코딩노트
2. Nginx 포트 포워딩
Nginx 가 정상적으로 설치 될 경우 브라우저에서 http://공인IP 로 접속하면 다음과 같은 화면이 보인다
(1) Nginx 설정파일 수정
vi를 이용하여 Nginx 설정파일을 수정한다
vi /etc/nginx/nginx.conf
해당파일을 최초로 열면 아래와 같이 되어 있다
(2) 포워딩 서버 내용 추가
위의 그림 중 http 내에 마지막 부분에 있는 include 내에 다음 내용을 입력 한다
server {
listen 80;
server_name [도메인 정보 또는 공인 IP];
root /usr/share/nginx/html;
location / {
include /etc/nginx/uwsgi_params;
proxy_pass http://127.0.0.1:[포워딩 하고자 하는 포트 번호];
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
최종 입력된 모습은 다음과 같다
(3) Nginx restart
Nginx를 다시 restart 하면 본인이 소유한 도메인에 포트 번호를 붙이지 않더라도 원하는 서비스 포트로 포워딩 되는 것을 확인 할 수 있다.
sudo systemctl start nginx
3. Certbot 설치 및 Let's Encrypt에서 SSL 인증서 발급
Certbot은 Let's Encrypt를 통해 자동으로 SSL 인증서를 발급할 수 있도록 도와주는 툴이다.
Certbot은 Ubuntu 에서는 snap 이라는 패키지 매니저를 사용하여 설치하는 것을 권장한다.
이용하고 있는 Ubuntu 서버에 snap이 없을 경우 우선 snap을 설치한다.
sudo apt update
sudo apt install snapd
이후 다음과 같이 Certbot 을 설치하고 인증서를 발급 받는다
sudo snap install certbot --classic
sudo certbot --nginx
설치 요청시 관리자 이메일 입력(1) 및 약관 및 설치동의 (2),(3)와 SSL이 인증하고자 하는 도메인을 선택(4)하는 메뉴가 아래와 같이 나온다.
이 과정을 거치면 Certbot은 Let's Encrypt를 통해 자동으로 SSL 인증서를 발급해온다.
추가적으로 Nginx 서비스를 리스타트 하지 않더라도 https://도메인 으로 접속시 자동으로 정상 접속 됨을 확인 할 수 있다
4. Crontab으로 SSL 인증서 자동 갱신 설정
Let's Encrypt에서 발급해주는 SSL 인증서는 90일짜리 단기 인증서이다.
원래는 90일 마다 서버에 접속하여 SSL 인증서를 수동으로 다시 발급해야한다.
따라서 리눅스 Crontab을 사용하여 이를 자동화 하는 과정이 필요하다
Crontab은 스케줄링 도구이다. 아래 명령을 이용해서 cron job 을 추가 해 보자
crontab -e
위를 실행하면 아래와 같이 crontab 을 어떤 에디터를 사용하여 편집 할 것인지 물어 본다
여기서는 2번 vim 을 사용하여 다음과 같이 입력한다.
00 01 1 * * certbot renew --post-hook "sudo service nginx reload"
위와 같이 하면 매월1일 01시 00분에 위에 작업이 자동으로 이루어져 인증서 갱신 및 nginx 재시동이 동시에 이루어 진다.
다른 주기로 갱신을 원할경우 crontab에 관련된 것을 참고 하면 된다.
입력이 완료된 화면은 아래와 같다.
위의 단계를 거쳐 NCP에서 Ngix 서버에서 Lets encrypt 설치 및 https 서비활성화 까지 모두 완료 및 인증서 자동화 까지 완료 되었다.
'Backend > Nginx' 카테고리의 다른 글
[Nginx] Ubuntu 22.04에서 Nginx 설치 및 관련 에러 해결 (0) | 2024.12.31 |
---|