组件分享之后端组件——一个可扩展的服务器平台caddy

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

组件基本信息

内容

本节我们分享一个可扩展的服务器平台​​caddy​​,Caddy 2 是一个强大的、企业级的、开源的 Web 服务器,带有用 Go 编写的 自动 HTTPS,默认使用TLS。Caddy 简化了您的基础架构。它负责 TLS 证书更新、OCSP 装订、静态文件服务、反向代理、Kubernetes 入口等。


概述

Caddy 最常用作 HTTPS 服务器,但它适用于任何长时间运行的 Go 程序。首先,它是一个运行 Go 应用程序的平台。Caddy“应用程序”只是作为 Caddy 模块实现的 Go 程序。两个应用程序 -​​tls​​​并且​​http​​- 标配 Caddy。

Caddy 应用程序立即受益于​​自动化文档、​​​​通过 API​​进行的优雅在线配置更改以及与其他 Caddy 应用程序的统一。

虽然​​JSON​​​是 Caddy 的原生配置语言,但 Caddy 可以接受来自​​配置适配器​​的输入,这些适配器基本上可以将您选择的任何配置格式转换为 JSON:Caddyfile、JSON 5、YAML、TOML、NGINX 配置等。

配置 Caddy 的主要方法是通过​​其 API​​​,但如果您更喜欢配置文件,​​命令行界面​​也支持这些。

与现有的任何 Web 服务器相比,Caddy 具有前所未有的控制水平。在 Caddy 中,您通常在内存中设置初始化类型的实际值,这些值支持从 HTTP 处理程序和 TLS 握手到存储介质的所有内容。Caddy 的可扩展性也非常可笑,它具有强大的插件系统,可以大大改进其他 Web 服务器。

要使用这种设计的力量,您需要了解配置文档的结构。有关​​Caddy 配置结构​​​的详细信息,请参阅​​我们的文档站点​​。

几乎所有 Caddy 的配置都包含在单个配置文档中,而不是像其他 Web 服务器那样分散在 CLI 标志和环境变量以及配置文件中。这使得管理您的服务器配置更加直接,并减少了隐藏的变量/因素。

​特征​

  • ​ZeroSSL​​​和​​Let's Encrypt​​用于公共名称
  • 用于内部名称和 IP 的完全托管的本地 CA
  • 可以与集群中的其他 Caddy 实例协调
  • 多发行人后备
  • 当其他服务器因 TLS/OCSP/证书相关问题而停机时保持正常运行
  • 在处理数万亿个请求并管理数百万个 TLS 证书后,可投入生产
  • 扩展到数以万计的站点......而且可能更多
  • HTTP/1.1、HTTP/2 和实验性 HTTP/3支持
  • 高度可扩展的​模块化架构​​让 Caddy 做任何事情都不会臃肿
  • 没有外部依赖的****任何地方运行(甚至没有 libc)
  • 用 Go 编写,一种比其他服务器具有更高内存安全保证的语言
  • 其实用起来很有趣
  • 所以,还有更多的​​发现​


本文声明:

组件分享之后端组件——一个可扩展的服务器平台caddy_应用程序

88x31.png


​知识共享许可协议​

本作品由 ​​cn華少​​ 采用 ​​知识共享署名-非商业性使用 4.0 国际许可协议​​ 进行许可。