Caddy es un servidor web extensible , multiplataforma y de código abierto escrito en Go .
El nombre "Caddy" se refiere tanto a un asistente para tareas tediosas como a una forma de organizar múltiples partes en un sistema simplificado. [3] En esencia, Caddy es una plataforma extensible para implementar servicios de larga duración ("aplicaciones") utilizando una única configuración unificada que se puede actualizar en línea con una API REST . [4] Las distribuciones oficiales de Caddy se entregan con un conjunto de módulos estándar que incluyen servidor HTTP , automatización TLS y aplicaciones PKI . [5] Es más conocido por sus funciones HTTPS automáticas. [6] [7]
Caddy está organizado en tres componentes principales: un comando , la biblioteca central y módulos de configuración. [8] El comando es la interfaz extensible mediante la cual se ejecuta el programa ; también puede cargar archivos de configuración , ejecutar modos comunes, administrar complementos instalados y ofrecer funciones de utilidad relevantes. La biblioteca central tiene API para cargar, descargar y administrar la configuración ; pero no hace nada particularmente útil por sí sola. La mayor parte de la funcionalidad de Caddy es proporcionada por módulos, que son complementos que extienden la estructura de configuración de Caddy; por ejemplo, el servidor HTTP es un módulo. [9] Los módulos de Caddy implementan varios servicios de larga duración, estándares web y otras características útiles.
La entrada de Caddy es un documento de configuración JSON [10] que se recibe a través de un socket abierto mediante una API HTTP RESTful. [11] [6] En ausencia de un cliente HTTP, la interfaz de línea de comandos de Caddy se puede utilizar para cargar archivos de configuración. [12] Los adaptadores de configuración se pueden utilizar para convertir otros formatos de configuración a JSON . Los adaptadores existentes incluyen Caddyfile, que tiene soporte de primera clase en la línea de comandos; y YAML , TOML , Nginx y varios otros formatos. [13] [6]
Cuando se recibe una configuración a través de su socket de administración, Caddy decodifica la configuración para todos los módulos especificados y comienza a ejecutar todos los módulos de la aplicación. [6] Cuando se están aprovisionando los módulos de la aplicación, ellos mismos pueden cargar y aprovisionar los módulos que utilizan. Por ejemplo, el servidor HTTP es un módulo de aplicación que utiliza módulos de controlador HTTP para gestionar las solicitudes HTTP; estos controladores pueden utilizar otros módulos para implementar su funcionalidad, y así sucesivamente. [14] Todos estos módulos se aprovisionan durante la fase de carga de configuración. [8]
Los complementos se instalan compilándolos estáticamente directamente en el binario de Caddy. [3] [6] Sin complementos, la estructura de configuración nativa de Caddy solo tiene algunas opciones básicas para administración y registro. [10] El resto de la funcionalidad debe ser proporcionada por módulos de la aplicación. Las distribuciones oficiales de Caddy se envían con docenas de módulos estándar; [5] otros se pueden agregar desde el sitio web del proyecto, [15] utilizando la xcaddy
herramienta de línea de comandos o compilando manualmente una compilación personalizada. [16]
Miek Gieben bifurcó Caddy para usarlo como núcleo de CoreDNS , ahora un proyecto de la Cloud Native Computing Foundation , ya que apreciaba su arquitectura general y la simplicidad de su configuración. [17]
El servidor HTTP es un módulo de aplicación que viene de serie con las distribuciones oficiales de Caddy. [9] Se utiliza principalmente como servidor de archivos estático [18] y proxy inverso de equilibrio de carga. [19] Si bien la base de las características HTTP de Caddy utiliza la implementación que se encuentra en la biblioteca estándar de Go, [20] hay una variedad de mejoras y personalizaciones disponibles como middleware y expuestas a través de parámetros de configuración: [6]
De manera predeterminada, se utiliza TLS automáticamente si alguna ruta tiene un host matcher que no está vacío. [21] Se supone que estos son nombres de sitios o direcciones IP que Caddy está atendiendo, por lo que Caddy obtendrá y renovará automáticamente los certificados para los nombres de host y direcciones IP configurados. Cuando se activa HTTPS automático de esta manera, Caddy también redirigirá las solicitudes HTTP a su ubicación HTTPS equivalente.
La versión 2 de Caddy se lanzó el 5 de mayo de 2020. [7] Los revisores dicen que todavía tiene una sintaxis de archivo de configuración más simple que Apache Web Server , aunque el formato de configuración de la versión 2 es en gran medida incompatible con la versión principal anterior de Caddy. [7] [22]
{{cite book}}
: CS1 maint: location missing publisher (link)