组件分享之后端组件——一个可扩展的服务器平台caddy
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。
组件基本信息
- 组件:caddy
- 开源协议:Apache-2.0 License
- 官网:caddyserver.com
内容
本节我们分享一个可扩展的服务器平台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 标志和环境变量以及配置文件中。这使得管理您的服务器配置更加直接,并减少了隐藏的变量/因素。 特征
- 使用Caddyfile轻松配置
- 强大的配置及其原生 JSON 配置
- 使用JSON API进行动态配置
- 如果您不喜欢 JSON,请配置适配器
- 默认 自动 HTTPS
- ZeroSSL和Let's Encrypt用于公共名称
- 用于内部名称和 IP 的完全托管的本地 CA
- 可以与集群中的其他 Caddy 实例协调
- 多发行人后备
- 当其他服务器因 TLS/OCSP/证书相关问题而停机时保持正常运行
- 在处理数万亿个请求并管理数百万个 TLS 证书后,可投入生产
- 扩展到数以万计的站点......而且可能更多
- HTTP/1.1、HTTP/2 和实验性 HTTP/3支持
- 高度可扩展的 模块化架构让 Caddy 做任何事情都不会臃肿
- 在没有外部依赖的****任何地方运行(甚至没有 libc)
- 用 Go 编写,一种比其他服务器具有更高内存安全保证的语言
- 其实用起来很有趣
- 所以,还有更多的发现
本文声明:
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。