매번 블로그 방문 때마다 https가 아닙니다. 주의하세요라는 팝업이 신경쓰였다… HTTPS(하이퍼텍스트 전송 프로토콜 보안, Hypertext Transfer Protocol Secure)는 월드 와이드 웹(WWW)을 통해 데이터를 안전하게 전송하기 위한 인터넷 통신 프로토콜 중 하나입니다!
먼저 현재 사용하는 서버는 우분투 20.04 LTS이며 Nginx와 Jekyll입니다. Nginx는 고성능의 오픈 소스 웹 서버 및 리버스 프록시 서버로, 많은 웹 애플리케이션 및 웹 사이트에서 사용되는 소프트웨어입니다. Jekyll은 정적 웹 사이트 생성기로, Markdown과 Liquid 템플릿 엔진을 사용하여 간단한 텍스트 파일에서 웹 페이지를 생성하는 데 사용됩니다. 주로 블로그, 개인 웹사이트, 문서 웹사이트 등을 만드는 데 유용합니다.
먼저 준비된 배포할 서버를 대충 2000번대 위의 포트에서 자유롭게 여시면 됩니다! 아래 명령어는 Jekyll서버 구동 명령어 입니다.
# {} <-이거는 빼고 값 넣으셔야해요! 앞으로도!
sudo jekyll serve --port 4000 --host {your_public_ip_or_domain}
먼저 apt를 업데이트 한 뒤 letsencrypt 패키지를 다운받습니다.
sudo apt update
sudo apt-get install letsencrypt
그후 이래 명령어로 SSL 키를 받습니다.
sudo certbot certonly --nginx -d {도메인(ex.com)}
치면 여러가지 질문이 나올텐데 잘 답변하세요! 그렇게 되면 아래 경로에 파일이 생깁니다.
/etc/letsencrypt/live/ {도메인 주소} /fullchain.pem
/etc/letsencrypt/live/ {도메인 주소} /privkey.pem
이제 설정을 잡아볼 겁니다! 일단 아래 명령어로 컨피그 파일을 만들어서 주세요
sudo nano /etc/nginx/sites-available/default
만들 파일에 아래에 명령어를 차례대로 다 넣어주세요 {도메인}은 꼭 대치하셔야 해요!
server {
listen 80;
server_name {도메인};
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name {도메인};
# 아까 발급받은 키 주소!
ssl_certificate /etc/letsencrypt/live/{도메인주소}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{도메인주소}/privkey.pem;
location / {
proxy_pass http://{도메인주소 or ip}:{포트}; # 사설ip 추천합니다.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
if ($host = {도메인}) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name {도메인};
return 404; # managed by Certbot
}
필수적으로 포트들을 열어주어야 해요! 아래 명령어로 포트를 열어주어요
sudo ufw allow 80
sudo ufw allow 443
# 만일 외부 ip 도메인으로 연결을 했다면 해당 포트도 열어주셔야 해요
sudo ufw allow {서버포트}
아래 명렁어로 서버를 가동해주세요!
sudo service nginx start
# 만일 재가동을 원하면 아래입니다!
sudo service nginx restart
정상적으로 가동되는지 확인하기 위해 아래 명령어로 확인 가능합니다!
sudo systemctl status nginx
# Active: active (running)이라고 뜨면 잘 나오는겁니다!
세부적인 에러를 확인하고 싶으면 다음 파일을 조회하면 됩니다!
sudo tail -f /var/log/nginx/error.log
갑자기… 블로그가 다운이 됐다 바로 SSL이 만료된 것이었다.
다음 순서에 맞추어 갱신을 시켜주었다.
sudo systemctl stop nginx # Nginx 웹 서버 중지
Certbot이 포트 80을 사용하여 HTTP-01 도메인 확인 작업을 수행하기 때문에 서버를 중단 시킨 후 갱신을 하였다.
sudo certbot renew
그 후 서버 가동을 하면 된다.
sudo systemctl start nginx # Nginx 웹 서버 시작
댓글