let's encrypt로 nginx https 적용하기

JJ·2023년 12월 1일
1

nginx 설치


sudo apt update
sudo apt install nginx

let's encrypt 클라이언트 다운로드


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

Ubuntu 18.04 이상에서는 Python3 버전을 대체합니다.

심볼릭 링크 생성


sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

nginx 설정파일 수정


아래 명령어로 설정파일을 편집 시작합니다.

sudo nano /etc/nginx/sites-available/default

아래와 같이 설정파일을 작성합니다.

server {

  listen 80;
  server_name yourdomain.com;
  return 301 https://$host$request_uri;

  location / {

    proxy_pass http://localhost:3000;
    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;

  }

}

server{

  listen 443 ssl;
  server_name yourdomain.com

  ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

  location / {

    proxy_pass http://localhost:3000;
    proxy_set_header Upgrate $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
  
  }
}

저는 nestjs 앱을 3000포트로 배포했기 때문에 proxy_pass에 http://localhost:3000으로 작성해두었습니다.

let's encrypt 인증서 발급받기


sudo certbot certonly --nginx -d yourdomain.com

nginx 시작


sudo nginx

이외


혹시나 이미 사용하고 있는 포트번호라고 나오면 아래 명령어로 80포트와 443 포트를 사용하고 있는지 확인합니다.

sudo netstat -tulpn | grep -E '(:80|:443)'

사용하고 있는 포트라면

sudo fuser -k 80/tcp

nginx가 restart, reload 되지 않는다면

sudo killall nginx

0개의 댓글