Skip to content
VDS · 웹사이트 및 웹 서버

Caddy: 인증서가 기본 제공되는 사이트

HTTPS 인증서를 스스로 발급하고 갱신하는 웹 서버예요. VPS에 설치하기, 최소한의 Caddyfile, Nginx에서 마이그레이션하기를 다뤄요.

업데이트 2026년 8월 23일

Caddy는 Nginx와 같은 역할을 하지만 Let's Encrypt 인증서를 스스로 발급하고 갱신해요. 사이트 설정이 세 줄이면 끝나므로 VDS에서 첫 프로젝트를 할 때 HTTPS를 가장 빠르게 적용하는 방법이에요.

설치

Debian과 Ubuntu — 공식 저장소에서:

apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
  | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
  > /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install -y caddy

AlmaLinux와 CentOS Stream:

dnf install -y 'dnf-command(copr)'
dnf copr enable -y @caddy/caddy
dnf install -y caddy && systemctl enable --now caddy

첫 사이트

전체 설정은 /etc/caddy/Caddyfile에 들어 있어요:

example.ru {
    root * /var/www/example.ru
    file_server
    encode gzip zstd
}
mkdir -p /var/www/example.ru
echo '<h1>Works</h1>' > /var/www/example.ru/index.html
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

첫 요청 후 몇 초가 지나면 https://example.ru에서 사이트가 열려요. 다른 걸 실행할 필요가 없어요. Caddy가 인증서를 직접 가져왔고 자동으로 갱신해요.

애플리케이션 프록시

로컬 포트에서 Node.js나 Python 서비스를 실행 중이라면 설정은 이렇게 돼요:

api.example.ru {
    reverse_proxy 127.0.0.1:3000
}

Caddy는 X-Forwarded-For와 X-Forwarded-Proto 헤더를 스스로 추가해요. 이 구조에 대한 자세한 내용은 리버스 프록시를 참고하세요.

여러 사이트는 같은 파일에 블록을 여러 개 추가하면 돼요. 자세한 내용은 한 머신에서 여러 사이트 운영을 참고하세요.

미리 확인할 것

  • 도메인의 A 레코드가 제어판 /hosting/vds/m/<id>의 “개요”에 있는 머신 주소를 가리키는지;
  • 머신 방화벽에서 80번과 443번 포트가 열려 있고 Nginx나 Apache가 점유하고 있지 않은지;
  • 도메인이 실제로 확인되는지: dig +short example.ru.

첫 번째 항목이 되어 있지 않으면 인증서 발급이 실패해요. Let's Encrypt가 도메인 이름으로 여러분의 머신에 접속할 수 있어야 하거든요.

자주 발생하는 오류

증상원인
could not get certificate도메인이 머신을 가리키지 않거나 80번 포트가 닫혀 있음
address already in useNginx나 Apache가 실행 중 — 하나를 중지하세요
사이트가 HTTP로만 열림Caddyfile에 이름 앞에 :80 또는 http://가 지정됨
발급 시도가 너무 많음Let's Encrypt 제한 — tls internal로 디버그하세요

로그: journalctl -u caddy -f.

Caddy는 인증서를 /var/lib/caddy/.local/share/caddy에 저장해요. “접속” 탭에서 시스템을 재설치할 때 이 디렉터리를 복사하세요. 그렇지 않으면 재설치 후 발급을 처음부터 다시 해야 해요.