stringtranslate.com

Caddy (servidor web)

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]

Arquitectura

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 xcaddyherramienta 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]

Servidor HTTP

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.

Desarrollo

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]

Referencias

  1. ^ "Versión 2.8.4". 2 de junio de 2024. Consultado el 20 de junio de 2024 .
  2. ^ Gerrand, Andrew (17 de febrero de 2016). "Go 1.6 is released". golang.org . Consultado el 5 de marzo de 2016 .
  3. ^ desde README.md, caddyserver/caddy en GitHub, 2021-09-27 , consultado el 2021-09-27
  4. ^ "Bienvenido - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2015-05-02 . Consultado el 2021-09-27 .
  5. ^ ab imports.go, caddyserver/caddy en GitHub, 2021-09-27 , consultado el 2021-09-27
  6. ^ abcdef Woodbeck, Adam (2021). Programación de redes con GO: servicios de red seguros y confiables desde cero. San Francisco, CA. págs. 217–239. ISBN 978-1-7185-0088-4.OCLC 1198449668  .{{cite book}}: CS1 maint: location missing publisher (link)
  7. ^ abc Jim Salter (6 de mayo de 2020). "Caddy ofrece TLS, HTTPS y más en un servidor web Go sin dependencias". Ars Technica . Consultado el 12 de junio de 2023 .
  8. ^ ab "Arquitectura - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-04-14 . Consultado el 2021-09-27 .
  9. ^ ab "Módulo http - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-05-06 . Consultado el 2021-09-27 .
  10. ^ ab "Estructura de configuración JSON - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-04-14 . Consultado el 2021-09-27 .
  11. ^ "API - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-03-02 . Consultado el 2021-09-27 .
  12. ^ "Línea de comandos - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-03-02 . Consultado el 2021-09-27 .
  13. ^ "Adaptadores de configuración - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-04-14 . Consultado el 2021-09-27 .
  14. ^ Holt, Matthew (4 de diciembre de 2019), Los desafíos de ingeniería de los programas Go de larga duración, Forge Utah , consultado el 27 de septiembre de 2021
  15. ^ "Descargar Caddy". caddyserver.com . Archivado desde el original el 2015-05-02 . Consultado el 2021-09-27 .
  16. ^ "Crear desde el código fuente - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-05-29 . Consultado el 2021-09-27 .
  17. ^ John Balemaric; Cricket Liu (2019). Aprendizaje de CoreDNS. "O'Reilly Media, Inc." ISBN 9781492047919. Recuperado el 12 de junio de 2023 .
  18. ^ "Guía rápida de archivos estáticos - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2020-05-08 . Consultado el 2021-09-27 .
  19. ^ "Guía de inicio rápido sobre proxy inverso: documentación de Caddy". caddyserver.com . Archivado desde el original el 8 de mayo de 2020 . Consultado el 27 de septiembre de 2021 .
  20. ^ Holt, Matthew (27 de mayo de 2015). "Una mirada al interior de Caddy, un servidor web escrito en Go". blog.gopheracademy.com . Archivado desde el original el 30 de mayo de 2015 . Consultado el 27 de septiembre de 2021 .
  21. ^ "HTTPS automático - Documentación de Caddy". caddyserver.com . Archivado desde el original el 2016-03-04 . Consultado el 2021-09-27 .
  22. ^ Jack Wallen (26 de mayo de 2022). «Cómo implementar una sola página web en el servidor Caddy desde un Caddyfile». TechRepublic . Consultado el 12 de junio de 2023 .

Enlaces externos