힘내라 일처리

Caddy2 알아보기 / 자동 HTTPS / 리버스 프록시 본문

알아보기

Caddy2 알아보기 / 자동 HTTPS / 리버스 프록시

일처리 2023. 2. 7. 01:18
반응형

caddy logo

Caddy2 에 대해서

캐디 2는 사용하기 쉽고, 빠르고, 안전하도록 설계된 웹 서버 소프트웨어이자 강력한 HTTP/2 서버입니다.

아래와 같은 기능들을 가집니다.

  1. 자동 HTTPS: Caddy 2는 Let's Encrypt에서 SSL/TLS 인증서를 자동으로 가져오고 갱신하므로 HTTPS로 웹 사이트를 쉽게 보호할 수 있습니다.
  2. 리버스 프록시: 캐디 2는 리버스 프록시를 지원하므로 단일 IP 주소에서 여러 웹 사이트를 서비스하고 여러 서버에 트래픽을 분산시켜 성능을 향상시킬 수 있습니다.
  3. 간편한 구성: 캐디 2는 읽고 쓰기 쉬운 인간 친화적인 구성 구문을 사용합니다. 단일 캐디 파일을 사용하여 HTTP 및 HTTPS 리디렉션, 콘텐츠 압축 등 웹 사이트의 모든 측면을 구성할 수 있습니다.
  4. 미들웨어 지원: Caddy 2는 사용자 지정 헤더 추가, 파일 업로드 처리, 동적 콘텐츠 제공 등 다양한 작업을 수행할 수 있는 플러그인인 미들웨어를 지원합니다.
  5. HTTP/2 지원: 캐디 2는 HTTP 프로토콜의 최신 버전인 HTTP/2에 완전히 최적화되어 있습니다. 즉, 웹 사이트 방문자의 페이지 로드 시간이 빨라지고 성능이 향상됩니다.
  6. 로깅 및 메트릭: Caddy 2는 자세한 로그 및 메트릭을 제공하므로 웹 사이트 트래픽을 모니터링 및 분석하고 성능 문제를 진단하고 오류를 추적할 수 있습니다.
  7. 보안 기능: Caddy 2에는 XSS(사이트 간 스크립팅) 공격, CSRF(사이트 간 요청 위조) 공격 등의 보안 기능이 내장되어 있습니다.

이것들은 캐디 2의 주요 기능 중 몇 가지에 불과하다. 캐디 2는 소규모 개인 웹 사이트나 대규모 엔터프라이즈 애플리케이션을 호스팅하려는 경우에 관계없이 다양한 사용 사례를 처리할 수 있는 다목적의 강력한 웹 서버입니다.

Caddy2 와 다른 기존 소프트웨어의 차이점은?

  1. Nginx: Nginx는 가장 널리 사용되는 웹 서버 소프트웨어 중 하나이며 높은 성능, 확장성 및 보안으로 유명합니다. 정적 파일 서비스에서 업스트림 서버에 대한 프록시 요청에 이르기까지 다양한 사용 사례를 처리할 수 있는 다목적 소프트웨어입니다. 주요 장점 중 하나는 시스템 리소스의 효율적인 사용으로 트래픽이 많은 웹 사이트에 적합합니다. 그러나 Nginx는 캐디 2에 비해 학습 곡선이 가파르고 구성 구문이 더 복잡합니다.
  2. Apache: Apache는 오랫동안 사용되어 온 또 다른 인기 있는 웹 서버 소프트웨어입니다. 그것은 강력한 기능 세트, 광범위한 커뮤니티 지원, 그리고 광범위한 플랫폼과 프로그래밍 언어와의 호환성으로 유명하다. 그러나 Apache는 Nginx만큼 효율적이지 않으며 특히 트래픽 부하가 높을 때 더 많은 시스템 리소스를 사용할 수 있습니다. 또한 캐디 2에 비해 구성 구문이 더 복잡합니다.
  3. Lighttpd: Lighttpd는 특히 정적 파일을 처리할 때 빠르고 효율적으로 설계된 경량 웹 서버 소프트웨어입니다. 트래픽이 적은 웹 사이트에 적합하거나 동적 콘텐츠를 제공하는 역방향 프록시로 적합합니다. 그러나 Lighttpd는 Nginx나 Apache에 비해 많은 기능이나 광범위한 커뮤니티 지원을 가지고 있지 않습니다.

요약하면, 캐디 2는 사용 편의성과 고급 기능 사이의 균형을 잘 유지합니다. 특히 중소 웹 사이트의 경우 설치 및 관리가 쉬운 웹 서버를 찾고 있는 개발자에게 적합한 선택입니다. 그러나 트래픽이 많은 웹 사이트를 위한 보다 강력한 솔루션이 필요한 경우 Nginx 또는 Apache가 더 나은 선택일 수 있습니다.

Caddy2 설치

다음은 시스템에 설치하는 방법은 다음의 링크를 따라서 진행합니다.

https://caddyserver.com/docs/install

Caddy2의 설치 프로세스는 운영 체제에 따라 다릅니다. 공식 설명서는 Windows, macOS, Linux 등을 포함한 다양한 플랫폼에 대한 지침을 제공합니다. 또한 패키지 관리자를 통해 apt, yum, pacman 등의 Caddy2를 설치하는 옵션도 제공합니다.

Caddy2 관리 명령어

  • Caddy2 서비스 시작 : `sudo systemctl start caddy`
  • Caddy2 서비스 중지 : `sudo systemctl stop caddy`
  • Caddy2 서비스 재시작 : `sudo systemctl restart caddy`
  • Caddy2 서비스 상태 확인 : `sudo systemctl status caddy`
  • Caddy2 서비스 활성화 (부팅 시 자동으로 실행) : `sudo systemctl enable caddy`
  • Caddy2 서비스 비활성화 : `sudo systemctl disable caddy`

Caddy2 리버스 프록시 구성 예시

다음과 같이 리버스 프록시를 구성해 볼 수 있습니다.

example.com {
    reverse_proxy localhost:8000
}

CaddyFile에 다음과 같이 설정하면 example.com에서 포트 8000의 로컬 호스트로 모든 트래픽을 라우팅합니다. 따라서 example.com에 액세스하면 localhost:8000에서 실행 중인 서버로 접속이 됩니다.

그리고 좀더 복잡한 옵션 또한 구성이 가능합니다.

example.com {
    reverse_proxy localhost:8000 {
        header_up Host {host}
        header_up X-Real-IP {remote}
        header_up X-Forwarded-Proto {scheme}
    }
}

위와 같이 구성하면 X-Real-IP 및 X-Forwarded-Proto 헤더를 통해 localhost:8000의 백엔드 서버로 전달됩니다.

자동 HTTPS 예시

Caddy2에서 기본으로 제공하는, SSL 구성 기능의 사용법은 다음과 같습니다.

example.com {
    tls email@example.com
    reverse_proxy localhost:8000
}

tls email@example.com을 사용하여 인증서 암호화 관리를 위한 이메일 주소를 지정합니다. Caddy2가 실행되면 example.com에 대한 유효한 SSL 인증서를 자동으로 얻고 HTTPS를 통해 사이트 서비스를 시작합니다. SSL 인증서가 만료되기 전에 자동으로 갱신됩니다.

tls 이메일 주소는 필수는 아니지만 인증서 만료와 갱신에 대한 알림을 받아 볼 수 있습니다.

반응형
Comments