ComputerScience/Web

[WebServer] caddy

LeeDaniel 2024. 10. 30. 16:27

 [ caddy ] 

caddy로고
원본 작성자 Matthew Holt
초기 릴리스 2015년 4월 28일
안정적 출시 2.8.4 / 2024년 6월 2일
저장소 https://github.com/caddyserver/caddy
작성자 Go
운영 체제 BSD variants, Linux, Plan 9, macOS and Windows
플랫폼 IA-32 (i386), x86-64, ARM, MIPS, S390X
유형 Web server, reverse proxy server
라이센스 Apache 2
웹사이트 https://caddyserver.com/


 [ 아키텍처 ] 

caddy는 명령어, 핵심 라이브러리, 구성 모듈의
세 가지 주요 구성 요소로 구성됩니다.
이 명령어는 프로그램이 실행되는 확장 가능한 인터페이스로,
구성파일을 로드하고, 공통모드를 실행하고,
설치된 플러그인을 관리하고,
관련 유틸리티 기능을 제공할 수도 있습니다.
핵심 라이브러리에는 구성 로드, 언로드 및 관리를 위한 API가 있지만,
그 자체로는 특별히 유용한 기능이 없습니다.
caddy의 대부분의 기능은 caddy의 구성 구조를 확장하는
플러그인 모듈에서 제공되며,
예를 들어 HTTP서버는 모듈입니다.
caddy모듈은 다양한 장기 서비서, 웹표준 및 기타 유용한 기능을 구현합니다.

caddy의 입력은 개방형 소켓을 통해
RESTful HTP API를 통해 수신되는 JSON 구성 문서입니다.
HTTP클라이언트가 없는 경우
caddy의 명령줄 인터페이스를 사용하여 구성 파일을 로드할 수 있습니다.
구성 어댑터를 사용하여 다른 구성형식을 JSON으로 변환할 수 있습니다.
기존 어댑터에는 커맨드 라인에서 1등급을 지원하는 캐디파일과
YAML, TOML, Nginx 및 기타 여러 형식이 있습니다.

관리 소켓을 통해 구성이 수신되면
caddy는 지정된 모든 모듈에 대한 구성을 디코딩하고
모든 앱 모듈 실행을 시작합니다.
앱 모듈을 프로비저닝 할 때는 직접 사용하는 모듈을 로드하고
프로비저닝 할 수 있습니다.
예를 들어, HTTP서버는 HTTP핸들러 모듈을 사용하여
HTTP요청을 처리하는 앱 모듈이며,
이러한 핸들러는 다른 모듈을 사용하여
기능을 구현할 수도 있습니다.
이러한 모든 모듈은 구성 로드 단계에서 프로비저닝됩니다.

플러그인은 caddy 바이너리에 직접 정적으로 컴파일하여 설치합니다.
플러그인이 없는 caddy의 기본 구성 구조에는
관리 및 기록을 위한 몇가지 기본 옵션만 있습니다.
다른 모든 기능은 앱 모듈에서 제공해야 합니다.
공식 caddy배포판에는 수십개의 표준 모듈이 포함되어 있으며,
다른 배포판은 다음을 사용하여 프로젝트 웹사이트에서 추가할 수 있습니다.
xcaddy명령줄도구 또는 사용자 지정 빌드를 수동으로 컴파일하여 사용할 수 있습니다.

Miek Gieben은 caddy의 전반적인 아키텍처와
구성의 단순성을 높이 평가하면서
현재 Cloud Native Computing Foundation의 프로젝트인
CoreDNS의 핵심으로 사용하기로 결정 했습니다.

 [ HTTP서버 ] 
HTTP서버는 공식 caddy배포판과 함께 표준으로 제공되는 앱 모듈입니다.
주로 정적 파일 서버 및 로드밸런싱 역 프록시로 사용됩니다.
caddy의 HTTP기능의 기본은 Go의 표준라이브러리에 있는 구현을 사용하지만,
다양한 향상된 기능과 사용자 지정은 미들웨어로 사용할 수 있으며
구성 매개변수를 통해 노출됩니다.

기본적으로 경로에 빈 호스트 일치자가 없는 경우
TLS가 자동으로 사용됩니다.
이들은 caddy가 서비스 중인 사이트 이름 또는
IP주소로 가정되므로 caddy는 구성된 host이름 및
IP주소에 대한 인증서를 자동으로 조달하고 갱신합니다.
이러한 방식으로 자동 HTTPS가 활성화되면
caddy는 HTTP요청을 해당 HTTPS위치로 redirect 합니다


이 글은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0에 따라
공개된 위키백과 문서
https://en.wikipedia.org/wiki/Caddy_(web_server)
의 자료를 사용합니다.
반응형

'ComputerScience > Web' 카테고리의 다른 글

[Web] JWT( JSON Web Token )  (0) 2024.11.22
HTTP cookie란?  (0) 2023.01.04
Session(세션)이란?  (0) 2023.01.04
HTTP( HyperText Transfer Protocol )  (0) 2021.07.01
hosts  (0) 2021.04.23