네트워크 / 보안
Caddy
Caddy는 웹사이트 제공과 요청 전달을 처리하고 HTTPS 인증서 발급·갱신을 자동화할 수 있는 웹 서버입니다.
쉬운 설명
직접 운영하는 앱에 HTTPS 주소를 붙일 때 Caddy를 사용할 수 있어요. 설정 파일에 도메인과 앱 주소를 적어 요청을 전달하도록 구성할 수 있어요. 조건이 맞으면 인증서 발급과 갱신도 자동으로 처리해 줘요. 도메인 연결이나 앱 실행까지 대신 준비해 주는 것은 아니에요.
이런 상황에서 만나요
VPS에서 실행 중인 스터디 앱을 HTTPS로 열고 싶다고 해 볼게요. Caddyfile에 공개할 도메인과 앱 주소를 넣는 구성은 아래처럼 읽을 수 있어요.
짧은 설정에서도 두 주소의 역할은 달라요
study.example.com {
reverse_proxy 127.0.0.1:3000
}https://study.example.com
127.0.0.1:3000
Caddy와 같은 환경에서 실행 중인 앱
- 1공개할 도메인과 요청을 전달할 앱 주소를 적어요.
- 2일반적인 자동 HTTPS 구성이 성공한 뒤 사용자가 여는 주소예요.
- 3인증서 발급과 별도로 앱에 연결할 수 있어야 해요.
도메인은 실제 내 서버로 연결돼야 하고 Caddy가 앱에 접속할 수 있어야 해요. 일반적인 공개 도메인 설정에서는 DNS와 외부의 80·443 포트 접근을 확인해요. 인증서 발급에 실패했다면 같은 명령을 반복하기 전에 로그와 선택한 검증 방식의 조건을 확인해요.
헷갈리기 쉬운 점
Caddyfile에 도메인만 쓰면 언제나 HTTPS가 되나요?
아니에요. 도메인 제어권을 확인하는 절차가 성공해야 해요. DNS 설정, 외부 연결, 인증서 발급 기관의 제한 등이 영향을 줄 수 있어요. DNS로 검증하는 방식은 별도 설정이 필요하고 포트 접근 조건도 일반적인 방식과 달라요.
localhost나 내부 이름에 쓰는 인증서는 공개 도메인의 인증서와 신뢰 방식이 다를 수 있어요. 다른 사람의 브라우저에서도 경고 없이 열리는지는 실제 배포 주소로 확인해요.
왜 알아야 할까요?
HTTPS 인증서 문제와 앱 연결 문제를 구분할 수 있어요. 짧은 설정이라도 도메인·앱 주소·외부 연결 중 무엇을 준비해야 하는지 이해할 수 있어요.
조금 더 자세히
Caddyfile은 Caddy를 설정하는 형식 중 하나입니다. reverse_proxy는 들어온 요청을 지정한 대상에 전달합니다. 예시의 127.0.0.1은 Caddy가 실행되는 환경 자신이므로 앱이 다른 컨테이너에 있다면 주소를 바꿔야 할 수 있습니다.
자동 HTTPS는 인증서 관리와 HTTP에서 HTTPS로의 전환 등을 도와줍니다. 도메인 검증 방식에는 HTTP, TLS-ALPN, DNS 방식 등이 있으며 필요한 네트워크 조건과 추가 모듈 여부가 다릅니다. 운영 환경에 맞는 공식 안내를 확인합니다.
직접 사용할 때 확인해 보세요
- 도메인이 서버를 가리키는지 확인한다
- 선택한 인증서 검증 방식의 연결 조건을 확인한다
- Caddy에서 앱으로 연결되는지 확인한다