概述
caddy 包含了command,core library,以及modules,command 主要是关于cli 命令的
core library 主要进行配置管理,可以Run() 以及Stop() 相关配置,同时也提供了一些工具,类型,以及一些值,方便模块使用
modules 这个是caddy 比较核心的,包含了内置的以及一些社区开发的
caddy core
包含了加载以及初始化配置,如果没有提供了会包含一个admin api,方便通过api 模式加载,核心是配置,官方提供了json 以及Caddyfile 模式的,我们也可以配置其他的
(比如nginx,yaml,hcl),app 部分包含了Start() 以及Stop() 方法
模块生命周期
caddy 包含了host 模块以及guest 模块两大类,模块的生命周期
加载、提供&校验、使用、清理
- load 阶段
主要是反序列化json 字节为类型,主要是json 类型的处理 - 提供阶段
比如配置guest 模块,配置内部值,进行配置校验 - 使用阶段
当guest 模块准备好了之后,就可以被host 模块使用了,每个模块都包含了一个模块id(包含namespace) - 清理阶段
比如配置被停用了,所有模块被卸载了,就会须在此处处理
插件
主要是caddy 的扩展,通过提供的模块注册入口进行加载
配置管理
提供acid 的配置处理,同时进行热更新,同时caddy 也提供了amdin api 灵活的进行配置管理
说明
在大概了解caddy 之后在学习源码就比较方便了
参考资料
https://caddyserver.com/docs/architecturehttps://caddyserver.com/docs/command-linehttps://caddyserver.com/docs/json/https://caddyserver.com/docs/extending-caddyhttps://pkg.go.dev/github.com/caddyserver/caddy/v2#RegisterModule
标签:架构,https,配置,caddy,caddyserver,模块,简单,com From: https://blog.51cto.com/rongfengliang/6026186