1. 개요
안녕하세요 HiDAN 입니다!
이번 포스팅에서는 Docker를 이용하여 Caddy를 리버스 프록시로 구축하는 방법을 소개해 드리겠습니다. 🚀
2. 리버스 프록시란?
리버스 프록시는 클라이언트의 요청을 받아 백엔드 서버로 전달하는 역할을 합니다.
이를 통해 보안, 로드 밸런싱, 캐싱, SSL 인증서 관리 등을 효율적으로 수행할 수 있습니다.
Caddy는 자동 HTTPS 지원 및 간편한 설정 덕분에 리버스 프록시 구축에 적합한 웹 서버입니다.
✅ Caddy를 리버스 프록시로 사용할 때의 장점
- Let’s Encrypt를 통한 자동 SSL/TLS 인증
- 간단한 구성 파일(Caddyfile)로 손쉬운 설정
- HTTP/2 및 HTTP/3 지원
- 다양한 플러그인 지원
3. Docker를 이용한 Caddy 리버스 프록시 구축
이제 Caddy를 Docker로 실행하고, 리버스 프록시 기능을 설정해 보겠습니다.
먼저 Caddy 디렉터리와 설정 파일이 저장될 conf 디렉터리를 생성합니다.
hidan@ubuntu:~$ mkdir caddy
hidan@ubuntu:~$ cd caddy/
hidan@ubuntu:~/caddy$
hidan@ubuntu:~/caddy$ mkdir conf
compose.yml 파일을 아래와 같이 작성합니다.
conf 디렉터리 아래에 Caddy 설정파일(Caddyfile)이 위치할 예정입니다.
Caddyfile을 /etc/caddy/Caddyfile로 매핑 시키는 것도 가능하지만, 권장하지 않습니다. (reload 불가능)
hidan@ubuntu:~/caddy$ vim compose.yml
services:
caddy:
image: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./conf:/etc/caddy
- ./site:/srv
- ./caddy_data:/data
- ./caddy_config:/config
conf 디렉터리 아래에 Caddy 설정 파일(Caddyfile)을 작성합니다.
테스트를 하기 위해 코딩 입문 국룰 “Hello, world!”를 출력해보았습니다.
hidan@ubuntu:~/caddy$ vim conf/Caddyfile
localhost {
respond "Hello, world!"
}
docker compose로 컨테이너를 생성 및 실행합니다.
hidan@ubuntu:~/caddy$ docker-compose up -d
이제 브라우저에서 Caddy 서버 IP로 접속하시면, Hello, world! 가 출력 되는 것을 볼 수 있습니다.
리버스 프록시 기능을 사용하기 위해선 아래와 같이 Caddyfile을 수정해주세요.
적용할 도메인 하위에 reverse_proxy 문법을 통해 내부 서버를 매핑시키면 됩니다.
저는 저번에 생성한 authentik 서버를 매핑해 보았습니다.
auth.example.com {
reverse_proxy 192.168.0.100:9000
}
이제 외부 네트워크에서 브라우저에 적용한 주소를 입력하면, 매핑한 서비스로 잘 연결되는 것을 볼 수 있습니다.
똑같은 방법으로 관리가 필요한 여러 서버를 추가할 수 있습니다.
- 참고
- example.com을 본인의 도메인으로 변경해주세요.
- 공유기를 이용하시는 경우, http/https 패킷을 Caddy 서버로 포워딩 해주세요.
4. 결론
지금까지 Docker를 활용하여 Caddy를 리버스 프록시 서버로 구축하는 방법을 배웠습니다! 🎉
Caddy에는 리버스 프록시 외에도 다양한 기능을 사용할 수 있습니다.
Caddy 공식 문서를 참고하셔서 자신에게 필요한 기능을 활용하세요.
감사합니다! 😊