caddyserver/caddy — Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Caddy — 자동 HTTPS를 지원하는 확장형 멀티플랫폼 웹 서버
Caddy는 HTTP/1.1·2·3를 지원하고 TLS 인증서 발급과 갱신을 자동화하는 Go 기반 서버 플랫폼입니다. Caddyfile과 JSON API로 설정하며, 모듈 구조를 활용해 플러그인과 Go 애플리케이션을 통합합니다.
- 주제
AI 요약
Caddy는 HTTPS를 기본값으로 삼는 멀티플랫폼 서버입니다. 웹 서버로 가장 많이 쓰이지만, 프로젝트는 Caddy를 Go 프로그램을 실행하는 플랫폼으로도 소개합니다. 기본 탑재 앱은 http와 tls이며, 앱을 모듈로 구현하면 자동 문서화와 API를 통한 설정 변경을 함께 활용합니다.
설정 방식
네이티브 설정 형식은 JSON입니다. 설정 파일을 선호한다면 Caddyfile을 사용할 수 있고, config adapter를 거쳐 YAML, TOML, NGINX 설정 등 다른 형식을 JSON으로 변환할 수도 있습니다. 관리의 기본 경로는 API이며, 명령줄 인터페이스로 파일을 불러오는 방식도 지원합니다. 설정 대부분을 하나의 문서에 모아 CLI 플래그나 환경 변수에 분산되는 값을 줄이는 구조입니다.
HTTPS와 프로토콜
공개 도메인에는 ZeroSSL과 Let’s Encrypt를 사용하고, 내부 이름과 IP 주소에는 관리형 로컬 인증기관(CA)을 제공합니다. 여러 Caddy 인스턴스 사이에서 조정할 수 있고, 인증서 발급자가 실패할 때 다른 발급자로 넘어가는 기능과 Encrypted ClientHello(ECH)도 지원합니다. HTTP/1.1, HTTP/2, HTTP/3를 기본 지원합니다. 프로젝트 설명에 따르면 TLS·OCSP·인증서 문제로 다른 서버가 중단되는 상황에서도 서비스를 유지하도록 설계했습니다.
확장과 빌드
모듈 구조로 HTTP 처리기부터 TLS 설정, 저장소까지 확장할 수 있습니다. 사용자 플러그인을 포함한 바이너리는 xcaddy build로 만들 수 있습니다. 이 도구는 별도 Go 모듈을 만들고 Caddy 버전을 지정한 뒤 플러그인 import를 추가해 컴파일하는 과정을 자동화합니다. 프로젝트는 외부 의존성 없이 실행되며 Go로 작성됐다고 안내합니다.
저장소는 Caddy가 운영 환경에서 수조 건의 요청을 처리하고 수백만 개의 TLS 인증서를 관리했으며, 수십만 사이트 규모로 확장된 사례가 있다고 소개합니다. 설치는 GitHub Releases에서 실행 파일을 내려받는 방법이 가장 간단합니다. 직접 빌드하려면 저장소를 복제한 뒤 go build를 실행하고, 테스트는 go test ./...로 시작합니다.
원문: GitHub / 번역·요약: Trawling