El Caddy servidor web es una de código abierto [3] servidor web escrito en Go . Utiliza la biblioteca estándar de Go para su funcionalidad HTTP [2] y admite HTTPS de forma nativa . [4] [5] [6]
Autor (es) original (es) | Matthew Holt |
---|---|
Versión inicial | 28 de abril de 2015 |
Lanzamiento estable | 2.3.0 / 1 de enero de 2021 [1] |
Versión de vista previa | 2.4.0-beta.1 / 15 de febrero de 2021 [1] |
Repositorio | |
Escrito en | Ir [2] |
Sistema operativo | Android , variantes de BSD , Linux , Plan 9 , OS X y Windows |
Tipo | Servidor web , servidor proxy inverso |
Licencia | Apache 2 |
Sitio web | caddyserver |
El desarrollo de Caddy comenzó en diciembre de 2014. [ cita requerida ] La primera versión se lanzó en abril de 2015. [7] [8] La versión 1.0.0 se lanzó en abril de 2019. [9] La versión 2.0.0 se lanzó en mayo de 2020. [ 10]
Caddy admite varios estándares web y está disponible como archivos binarios compilados estáticamente para los sistemas operativos Microsoft Windows , macOS , Linux , Android y BSD en arquitecturas x86-64 , IA-32 y ARM .
Capacidades
Caddy puede ofrecer una variedad de tecnologías de sitios web, que también pueden actuar como un proxy inverso y un equilibrador de carga. La mayoría de las funciones de Caddy son implementaciones que se encuentran en la biblioteca de Go, pero algunas mejoras están disponibles como middleware y se exponen a través de directivas en Caddyfile (un archivo de texto que se usa para configurar Caddy). [11]
- HTTP / 1.1 (HTTP de texto sin formato), HTTP / 2 (predeterminado para conexiones HTTPS) y soporte experimental para HTTP / 3 . [12]
- HTTPS, ya sea habilitado y administrado automáticamente, o configurado manualmente
- TLS 1.3 (incluido el soporte temporal para protocolos más antiguos) [13]
- Indicación del nombre del servidor
- Grapado OCSP
- Alojamiento virtual (varios sitios en el mismo puerto) [14]
- Nativa IPv4 e IPv6 apoyo
- Sirve archivos estáticos (usa sendfile siempre que sea posible)
- Reinicio / recarga agraciado
- Proxy inverso (HTTP o WebSockets )
- Equilibrio de carga con comprobaciones de estado
- Proxy FastCGI [15] [16]
- Plantillas (similar a las inclusiones del lado del servidor )
- rebaja prestación
- Interfaz de puerta de enlace común a través de WebSockets
- Compresión Gzip
- Autenticación de acceso básica
- Reescritura de URL
- Redireccionamientos
- Navegación de archivos
- Registros de acceso, errores y procesos
- Soporte QUIC experimental
Seguridad
El 2 de junio de 2015, se lanzó la versión 0.7.1 para parchear una vulnerabilidad a los ataques de tiempo en el middleware de autenticación básica de Caddy. [17]
Con respecto a los protocolos y los conjuntos de cifrado, Caddy usa TLS 1.0-1.2 y prefiere ECDHE ECDSA con AES-256 GCM SHA-384, aunque se admiten una docena de cifrados diferentes. Cloudflare también ha utilizado Caddy como plataforma para ofrecer una implementación experimental de TLS 1.3. [18]
La reducción de privilegios tradicional como se realiza en los programas C no es trivial o no es posible en los programas Go. [19]
HTTPS automático
Caddy activa HTTPS de forma predeterminada para sitios con nombres de dominio calificados (nombres para los cuales se puede negociar un certificado TLS a través del protocolo ACME ) y redirige las solicitudes HTTP a HTTPS. [20] Obtiene los certificados necesarios durante el inicio y los mantiene renovados durante la vida útil del servidor. Let's Encrypt es la autoridad de certificación predeterminada, pero el usuario puede personalizar la CA ACME que se utiliza, lo que a menudo es necesario cuando se prueban configuraciones. En el primer trimestre de 2016, Caddy representaba aproximadamente el 2% de los certificados emitidos por Let's Encrypt. [21]
Una configuración alternativa permite a Caddy obtener certificados solo cuando sea necesario durante los apretones de manos TLS en lugar de al inicio, una función denominada "TLS bajo demanda". [22] Para habilitar esta función, el usuario debe especificar un número máximo de certificados que se pueden emitir de esta manera. Cuando Caddy recibe una solicitud de un nombre de host para el que aún no tiene un certificado, negociará un nuevo certificado a través de ACME y lo entregará inmediatamente, mientras almacena en caché el certificado obtenido en la memoria y lo almacena en el disco. Este proceso suele tardar unos segundos y está sujeto a límites de velocidad estrictos. [22]
Al servir TLS, Caddy rotará automáticamente las claves de los tickets de sesión periódicamente para ayudar a preservar el perfecto secreto hacia adelante. [23]
Telemetría (v1)
A partir de la versión 0.11, Caddy tiene telemetría. [24] Esto es opt-in (deshabilitado de forma predeterminada) al descargar Caddy desde el sitio web oficial, y optar por no participar (habilitado de forma predeterminada) cuando se crea desde la fuente. [25]
Caddy v2 no tiene telemetría. [26]
Influencia
CoreDNS
Miek Gieben, el desarrollador original de CoreDNS , lo creó a partir de una bifurcación del servidor web Caddy para aprovechar la sintaxis de configuración simple de Caddy, la arquitectura de complementos y el uso del lenguaje Go. [27]
Referencias
- ^ a b "Lanzamientos" . Github . Consultado el 29 de marzo de 2021 .
- ^ a b Gerrand, Andrew (17 de febrero de 2016). "Se lanza Go 1.6" . golang.org . Consultado el 5 de marzo de 2016 .
- ^ "Laboratorios de código de luz" . lightcodelabs.com . Laboratorios Light Code . Consultado el 15 de septiembre de 2019 .
Caddy es un servidor web HTTP / 2 de código abierto y fácil de usar ...
- ^ Johnson, Brad (23 de febrero de 2016). "Un mejor servidor web con SSL gratuito" . VolumeLabs.net . Archivado desde el original el 2 de agosto de 2017 . Consultado el 5 de marzo de 2016 .
- ^ "HTTPS automático con Caddy Server" . 18 de diciembre de 2015 . Consultado el 5 de marzo de 2016 .
- ^ Aas, Josh (12 de febrero de 2016). NYLUG presenta: Josh Aas en Let's Encrypt: una CA gratuita, automatizada y abierta . Bloomberg. 32 minutos en.
- ^ "Caddy 0.5.0" . github.com .
- ^ "Mostrar HN: Caddy, un servidor web HTTP / 2 multiplataforma" . news.ycombinator.com . 28 de abril de 2015.
- ^ "Caddy 1.0.0" . github.com .
- ^ "Caddy 2.0.0" . github.com .
- ^ "El Caddyfile" . Consultado el 29 de febrero de 2016 .
- ^ "Versión 2.0 beta 17 · caddyserver / caddy" . Github . 2020-03-13 . Consultado el 11 de agosto de 2020 .
- ^ "tls - Directivas de Caddy" . Consultado el 8 de marzo de 2016 .
- ^ Benedetti, Benoit (noviembre de 2015). "Caddy, Le Serveur Web Facile" [Caddy, The Easy Web Server]. Revista GNU / Linux Francia (en francés). Francia.
- ^ "Cómo configurar [sic] el Caddy Web Server con php-fpm" . Archivado desde el original el 18 de agosto de 2017 . Consultado el 9 de marzo de 2016 .
- ^ Beke, Mathias (21 de agosto de 2015). "Caddy Server y WordPress (PHP-FPM)" .
- ^ "Lanzamiento 0.7.1 · mholt / caddy" . 2 de junio de 2015.
- ^ Nick Sullivan [@grittygrease] (4 de marzo de 2016). "Está integrado en Go utilizando versiones personalizadas de @ rlbarnes's Mint y @ mholt6's Caddy" (Tweet), a través de Twitter .
- ^ "syscall: Setuid / Setgid no se aplica a todos los subprocesos en Linux" . 21 de enero de 2011 . Consultado el 5 de marzo de 2016 .
- ^ "HTTPS automático" . Consultado el 5 de marzo de 2016 .
- ^ Eckersley, Peter (21 de febrero de 2016). USENIX Enigma 2016 - Varias historias de terror sobre la web cifrada . USENIX. 13 minutos en.
- ^ a b "TLS bajo demanda" . Consultado el 5 de marzo de 2016 .
- ^ Kubacki, Mark (12 de abril de 2016). "servidor: Gire las 'claves ' del ticket TLS " . Archivado desde el original el 13 de junio de 2019 . Consultado el 13 de junio de 2019 , a través de GitHub.
- ^ "Caddy 0.11 tendrá telemetría" . Caddy . 2018-03-30. Archivado desde el original el 12 de diciembre de 2019 . Consultado el 5 de junio de 2018 .
- ^ "Telemetría Caddy - Documentación" . caddyserver.com . Consultado el 20 de febrero de 2019 .
- ^ "v2: FAQ - caddyserver / caddy Wiki" . Caddy . 2020-04-10 . Consultado el 25 de marzo de 2021 .
- ^ Belamaric, John; Liu, críquet (2019). "1. Introducción". Aprendizaje de CoreDNS: configuración de DNS para entornos nativos en la nube (1 ed.). ISBN 9781492047964. OCLC 1091363083 . ¿Qué es CoreDNS ?.
enlaces externos
- Página web oficial
- caddy en GitHub