Caddy로 Nginx를 대체한 경험
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
웹 개발자 및 DevOps 엔지니어
난이도: 중급~고급 (역프록시 설정, HTTPS 자동화, 서버 관리 경험 필요)
핵심 요약
- Caddy는 단일 바이너리로 구성되며, Nginx보다 훨씬 간단한 설정과 자동 HTTPS 지원
- 3줄의 Caddyfile로 완전한 역프록시 구성 가능 (예:
reverse_proxy localhost:3000
) - 자동 인증서 관리, HTTP/2, HTTP/3, 헬스체크, 로드 밸런싱 기능 포함
섹션별 세부 요약
1. 서론: Nginx에서 Caddy로의 전환
- Nginx는 강력하지만 설정이 복잡하고, 인증서 관리가 수동적
- Caddy는 단순한 설정으로 자동 HTTPS, 인증서 재발급, HTTP/2 지원
- UserJot 프로젝트에서 Caddy 사용으로 인프라 복잡도 감소
2. Caddy의 역프록시 설정 예시
- Hono API 예시:
api.yourapp.com { reverse_proxy localhost:3000 }
- 자동 생성된 인증서, HTTPS 리디렉션, 헤드가 처리됨
- 로컬 개발 환경에서도
.local
도메인과 HTTPS 사용 가능
3. 다중 도메인 및 서브도메인 관리
- 각 도메인 별로 독립적인 설정 가능 (예:
admin.yourapp.com { basicauth { ... } }
) - 와일드카드 인증서 지원 (
*.yourapp.com { reverse_proxy localhost:3000 }
) - 자동 인증서 분리 및 관리, 복잡한 설정 불필요
4. 로드 밸런싱 기능
reverse_proxy localhost:3000 localhost:3001 { lb_policy round_robin }
- 헬스체크(
health_uri /health
)로 서버 상태 모니터링 - 죽은 서버 자동 제거, IP 해시 또는 최소 연결 전략 선택 가능
5. 로컬 개발 환경 구성
/etc/hosts
에.local
도메인 추가 후 Caddyfile 생성caddy run --watch
명령어로 자동 리로드 지원- 실제 인증서와 프로덕션 URL과 동일한 환경 제공
6. Caddy vs 기타 서버 비교
- Nginx: 강력하지만 설정 복잡
- Apache: 2024년 기준 사용 권장 X
- Traefik: Kubernetes 전용, 과도한 기능
- HAProxy: 로드 밸런싱 강점, HTTPS 복잡
- Caddy: 자동화와 간단한 설정으로 "Just works"
7. Caddy 설치 및 사용 예시
- Debian 기반 시스템 설치 명령어:
```bash
sudo apt install caddy
```
- Docker 이미지 사용 예:
```Dockerfile
FROM caddy:alpine
COPY Caddyfile /etc/caddy/Caddyfile
```
- 간단한 테스트 구성:
```caddy
localhost:8080 {
respond "Hello, Caddy!"
}
```
결론
- Caddy는 복잡한 Nginx 설정 대신 단순한 구성과 자동화로 인프라 관리를 효율화
- SaaS 개발자나 빠른 프로토타이핑이 필요한 팀에게 적합
- "Caddy는 Just works"라는 슬로건처럼 자동 인증서, 헬스체크, 로드 밸런싱 등 기능을 최소한의 설정으로 제공
- "Caddy로 단일 역프록시 설정을 시도해보세요. 구성의 간결성과 개발 속도 향상을 경험하게 될 것입니다."