1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| (如果它的文件名不是以“Caddyfile”开头,你需要指定 --adapter caddyfile 。) 你现在可以尝试再次加载你的网站,你会发现它正常工作了! 正如你所见,有几种方法可以使用初始配置启动 Caddy: - 当前目录下名为 Caddyfile 的文件 - --config 标志(可选与 --adapter 标志一起使用) - --resume 标志(如果之前加载了配置) ## JSON 与 Caddyfile 现在你知道 Caddyfile 只是为你转换为 JSON。 Caddyfile 似乎比 JSON 更容易,但你应该总是使用它吗?每种方法都有优缺点。答案取决于你的需求和用例。 <table><thead><tr><th valign="top" style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">JSON</span></section></th><th valign="top" style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">Caddyfile</span></section></th></tr></thead><tbody><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">容易生成</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">手工编写方便</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">容易编程</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">自动化困难</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">表达能力强</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">表达能力适中</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">提供 Caddy 的全部功能</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">提供 Caddy 的大部分功能</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">允许配置遍历</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">无法在 Caddyfile 内部遍历</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">支持部分配置更改</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">只能更改整个配置</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">可以导出</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">无法导出</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">与所有 API 端点兼容</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">与部分 API 端点兼容</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">文档自动生成</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">文档手工编写</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">通用</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">小众</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">更高效</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">更耗计算资源</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">有点无聊</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">有点有趣</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><strong style="color: rgb(0, 0, 0);"><span leaf="">了解更多:JSON 结构</span></strong></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><strong style="color: rgb(0, 0, 0);"><span leaf="">了解更多:Caddyfile 文档</span></strong></td></tr></tbody></table> 你需要根据你的用例来决定哪种方式最适合。 需要注意的是,JSON 和 Caddyfile(以及任何其他支持的配置适配器)都可以与 Caddy 的 API 一起使用。然而,如果你使用 JSON,你会得到 Caddy 的全部功能和 API 特性。如果使用配置适配器,加载或更改配置的唯一方法是通过 /load 端点。 ## API 与配置文件 你还需要决定你的工作流程是基于 API 还是基于 CLI。(你可以在同一服务器上同时使用 API 和配置文件,但我们不推荐:最好有一个单一的事实来源。) <table><thead><tr><th valign="top" style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">API</span></section></th><th valign="top" style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">配置文件</span></section></th></tr></thead><tbody><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">使用 HTTP 请求更改配置</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">使用 shell 命令更改配置</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">容易扩展</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">扩展困难</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">手动管理困难</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">手动管理方便</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">真的很有趣</span></section></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">也很有趣</span></section></td></tr><tr><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><strong style="color: rgb(0, 0, 0);"><span leaf="">了解更多:API 教程</span></strong></td><td valign="top" style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><strong style="color: rgb(0, 0, 0);"><span leaf="">了解更多:Caddyfile 教程</span></strong></td></tr></tbody></table> API 或配置文件工作流程的选择与配置适配器的使用是正交的:你可以使用 JSON,但将其存储在文件中并使用命令行界面;反之,你也可以使用 Caddyfile 与 API。 但大多数人会使用 JSON+API 或 Caddyfile+CLI 的组合。 正如你所见,Caddy 非常适合各种各样的用例和部署场景! ## 启动、停止、运行 由于 Caddy 是一个服务器,它会无限期运行。这意味着在你执行 caddy run 之后,你的终端不会被释放,直到进程被终止(通常使用 Ctrl + C )。 尽管 caddy run 是最常见且通常推荐的方式(尤其是将其作为系统服务时!),但你也可以使用 caddy start 来启动 Caddy 并让它在后台运行:
|