들어가며
이번 포스팅에서는 AWS EC2 환경에서 Caddy를 사용해 리버스 프록시를 빠르게 설정하는 방법을 다루어보려 한다

물론 Nginx나 Apache를 사용해서 리버스 프록시를 설정해주는 방법도 있지만, 좀더 설정해줄 내용이 많고, 별도의 SSL 인증서 관리도 해줘야해서 번거로울 수 있다고 생각해서 해당 내용은 추후에 다른 포스팅으로 다뤄보려고한다. 특히 그중에서도 Let's Encrypt 인증서 자동 갱신 설정이나 도메인 없이 HTTPS를 적용하는 과정에서 많은 시간을 소모했었는데, 그 경험도 공유해보겠다.
다시 돌아와서 앞서말한 Nginx나 Apache와 비교해서, 간단하고 직관적인 방법이 Caddy라고 생각하면 될거같다. 정말 간편하고 설정할 것도 별로 없어서 포스팅을 보면 충분히 따라서 가능할거라고 생각한다
Caddy - The Ultimate Server with Automatic HTTPS
Caddy is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go
caddyserver.com
Caddy란?
먼저 Caddy가 뭔지 알아야 할거같아서 해당 내용에 대해서 간단하게 설명해보자면,
Caddy란?
Go 언어로 개발된 오픈소스 웹 서버로, 자동 HTTPS 설정과 간단한 설정 파일로 유명하다
특히 리버스 프록시 설정이 매우 직관적이고, 별도의 SSL 인증서 설정 없이도 자동으로 HTTPS를 제공한다
이때, 리버스 프록시는 클라이언트의 요청을 대신 받아 내부 웹 서버에 전달하고, 서버의 응답을 다시 클라이언트에게 전달하는 중개자 역할의 서버라고 생각해주면 될거같다

Caddy의 주요 장점은?
1. 자동 HTTPS: Let's Encrypt를 통한 자동 SSL 인증서 발급 및 갱신
2. 간단한 설정: Nginx 대비 훨씬 직관적인 Caddyfile 문법
3. 도메인 없이 HTTPS: nip.io 같은 서비스를 활용해 퍼블릭 IP로도 HTTPS 적용 가능
4. 내장 리버스 프록시: 별도 모듈 설치 없이 바로 사용 가능
위의 4가지가 캐디의 장점이라고 생각했는데, 별도의 certbot 설정 없이도 자동으로 SSL 인증서가 적용되고, 3번에도 나와있듯이 nip.io를 활용해 도메인 없이도 HTTPS를 쉽게 적용할 수 있다는 장점이 있다. 또 개발 환경에서 빠르게 리버스 프록시를 설정할 수 있다는 장점때문에 많이 사용한다고 생각한다
본문
아래 내용부터는 구체적으로 Caddy로 리버스 프록시를 설정하는 플로우를 설명해보려고한다.
1단계: EC2에서 Caddy 설치
Ubuntu 환경에서 Caddy를 설치하는 방법이다
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
2단계: 설치 확인
caddy --version
3단계: Caddyfile 설정
sudo vim /etc/caddy/Caddyfile
리버스 프록시 설정을 위한 Caddyfile 생성이다
4단계 : 도메인 없이 HTTPS 적용하기
{
admin 0.0.0.0:2020
}
퍼블릭IP.nip.io {
reverse_proxy 127.0.0.1:포트번호
}
개발 환경에서는 가비아를 사용해서 도메인을 구매하지 않는 경우가 많고, 간단하게 할수록 좋다고 생각해서 별도 도메인이 없는 경우가 많다. nip.io 서비스를 활용하면 퍼블릭 IP만으로도 HTTPS를 적용할 수 있다
admin 0.0.0.0:2020 설정을 추가해준 이유는, Caddy는 기본적으로 관리자 API를 제공하는데 외부에서 접근 가능하도록 설정해준거라고 생각해주면 될거같다
5단계 : 서비스 자동 시작 설정
sudo vim /etc/systemd/system/caddy.service
EC2 인스턴스 재시작 시에도 자동으로 Caddy가 실행되도록 systemd 서비스를 설정했다
마치며
끝 !! 매우 간단하죠 ?! 😎
근데 실제 개발, 운영 환경에서는 CI/CD 플로우를 짤때도, 캐디 리버스 프록시 설정까지 고려해주는 설계를 해줘야하고, CORS 설정이나 Swagger 문서의 서버 URL 변경같은거도 잊으면 안된다 (사실 제가 까먹었던 적이 있었음)
서론에서도 작성했듯이 Nginx나 Apache를 활용하면 각종 고도화가 가능해서 더 복잡해지는데, 다음 포스팅은 해당 내용을 진행해볼게요 🔥
'DevOps > 리버스 프록시' 카테고리의 다른 글
| 리버스 프록시란 무엇일까 ? (DevOps) (3) | 2025.06.09 |
|---|