English

caddy — 자동 HTTPS 웹 서버

Linux / 웹 서버 운영 / caddy.html

웹 서버 운영원문등록 2026-10-18T22:00:00+09:00

💬 "caddy 명령어"

caddy는 자동 HTTPS 웹 서버 설정 한 줄로 자동 HTTPS(Let's Encrypt) 인증서를 발급·갱신합니다. nginx 대비 설정이 단순합니다.

도메인 한 줄로 자동 HTTPS 인증서 발급·갱신을 지원합니다. JSON·Caddyfile 두 가지 설정 형식을 씁니다.

  • 개념: 도메인 한 줄로 자동 HTTPS 인증서 발급·갱신을 지원합니다.
  • 주요 기능: JSON·Caddyfile 두 가지 설정 형식을 씁니다.
  • 장점: HTTP/3(QUIC)을 기본 지원합니다.
  • 활용: 정적 파일·리버스 프록시·FastCGI를 내장합니다.

설치 및 다운로드

caddy는 패키지 매니저 또는 공식 스크립트로 설치합니다.

환경명령
Ubuntu / Debiansudo apt install caddy
공식 스크립트curl https://caddyserver.com/api/download?os=linux
macOS (brew)brew install caddy
Dockerdocker run -p 80:80 -p 443:443 caddy
확인caddy version

설치 확인은 caddy --version으로 합니다.

자주 쓰는 옵션

옵션설명
caddy run포그라운드 실행
caddy start백그라운드 실행
caddy reload설정 재로드 (무중단)
caddy validate설정 문법 검증
sudo systemctl reload caddy서비스 재로드

필수 명령어 조합 3가지

  • caddy run — Caddyfile 로드 후 포그라운드 실행
  • caddy validate --config /etc/caddy/Caddyfile — 설정 검증
  • sudo systemctl reload caddy — 무중단 재로드

💬 "실제 서버에서 caddy를 사용하는 예시를 보여줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 설치 확인

설치 여부를 확인합니다.

caddy version || sudo apt install -y caddy

2단계 · 설정 작성

Caddyfile을 작성합니다.

echo 'example.com {\n    root * /var/www/html\n    file_server\n}' > /etc/caddy/Caddyfile

3단계 · 시작

Caddy를 시작하고 확인합니다.

sudo systemctl restart caddy && curl -sI https://example.com/

실제 실행 화면

Caddyfile을 작성하고 설정을 검증한 결과입니다.

caddy 명령어 실행 결과

실제 운영 중인 서버

실무에서는 이렇게 씁니다

1. nginx→Caddy 이관

상황 — nginx 443 블록을 Caddyfile로 이관합니다.

echo 'example.com {\n    root * /var/www/html\n    file_server\n    encode gzip\n}' > /etc/caddy/Caddyfile

결과 — Caddyfile 하나로 설정이 완료됩니다.

포인트 — certbot cron도 별도 설정도 필요 없습니다.

2. 자동 HTTPS 확인

상황 — 자동 인증서 발급을 확인합니다.

sudo systemctl restart caddy && sleep 5 && curl -sI https://example.com/

결과 — HTTP/2 200과 server: Caddy가 보입니다.

포인트 — 브라우저에서 자동 HTTPS가 동작합니다.

실제 실행 화면

Caddy 시작 후 자동 HTTPS가 동작하는 것을 확인한 결과입니다.

caddy 명령어 실행 결과 2

실제 운영 중인 서버

주의할 점

  • Caddyfile의 site address에 포트를 명시하지 않으면 80/443을 기본으로 씁니다. 포트 충돌에 주의합니다.
  • 자동 HTTPS는 도메인이 실제로 Caddy 서버를 가리켜야 동작합니다. DNS 미설정 시 인증서 발급이 실패합니다.
  • nginx에서 Caddy로 전환 시 nginx 전용 모듈(예: Lua)은 대체 구현이 없을 수 있습니다.