深入Caddy 2源代码了解工作原理 - Sourcegraph


Caddy 是一个生产 Web 服务器,它优先考虑开发人员的体验和可扩展性。开箱即用的神奇功能之一是自动 HTTPS。它的模块化架构使其易于扩展和定制,并且它具有很棒的文档以及简单明了的配置。Caddy 用于各种环境,从小型初创公司到医院等大型机构。Caddy 在 GitHub 上拥有超过 40,000 颗星,是当今最受欢迎的生产 Web 服务器之一。
兴趣点:

Caddy 作为单个静态二进制文件分发。它的命令行界面定义在顶级cmd目录中。它的 main 函数快速委托给Main可导入包中定义的函数,因此 Caddy 也可以作为库导入和运行:

func main() {
    caddycmd.Main()
}

除了 之外cmd/,还有另外两个值得注意的顶级目录:

  • caddyconfig处理配置的加载和卸载,这听起来像是一个外围问题,但实际上包含了 Caddy 的大部分核心行为。
  • modules包含插入到 Caddy 中的第一方模块的定义,并且基本上贡献了您期望从 Web 服务器获得的所有功能,例如 HTTP 处理、TLS、与各种 DNS 提供程序的集成、负载平衡和 SSH。

详细点击标题