Caddy

出自 ArchWiki

Caddy 是一个支持 HTTP/2 的 Web 服务器,并带有自动 HTTPS 功能。

安装

安装 caddy 软件包。

插件

如果您需要 caddy 的基本版本以外的功能,可以使用 xcaddy-binAUR 来自定义您的 caddy 服务器构建。如果您需要 DNS 挑战等附加插件,这将非常有用。或者,如果预构建的软件包(包含您需要的插件)已经可用,您可以选择从 AUR 安装,例如 caddy-cloudflareAUR

对于自定义的 caddy 服务器构建,您可以使用 xcaddy 构建带有必要插件模块的 caddy

$ xcaddy build [<caddy_version>]
   [--output <file>]
   [--with <module[@version][=replacement]>...]

更多信息,请参阅 xcaddy 仓库

配置

Caddy 2 支持多种配置格式,请参阅 配置适配器(Caddyfile、nginx、json、yaml、toml 等)。

最常见的情况是,Caddy 使用名为 Caddyfile 的纯文本文件进行配置。Caddyfile 以(可选的 全局选项块 和)要服务的站点地址开头,后跟多个指令。

一个简单的 Caddyfile,用于托管 localhost:2020 上的站点

{
  http_port 2020
}

localhost:2020
file_server

使用

$ caddy help
$ caddy help run

Caddy 可以由任何用户从页面的目录运行,并且 Caddyfile 应该在同一目录下

$ caddy run

或者,您可以指定自定义的 Caddyfile

$ caddy run --config ../path/to/Caddyfile

故障排除

证书错误

如果您遇到与 SSL 证书相关的任何问题(尤其是在非公共域上),则可能是因为正在运行的 caddy 实例没有权限将证书添加到系统的信任存储区。当使用 caddy.service 自动启动 caddy 时,似乎就是这种情况。

要解决此问题,请以 root 身份运行以下命令。您只需在很长一段时间内(根证书的生命周期内)运行一次即可。

# XDG_DATA_HOME=/var/lib caddy trust

缺少 Content-Type

如果您在使用文件服务器的 browse 子指令时遇到问题,例如视频文件显示不正确,则可能是由于 HTTP 响应中缺少 Content-Type 标头。

Caddy 使用 Go 语言编写,并使用标准 MIME 库的 TypeByExtension 函数从文件扩展名获取 mime 类型。正如文档所述,TypeByExtension 函数使用 /etc/mime.types(或列出的其他文件之一)来获取 MIME 类型。

您必须安装 mailcap 软件包,以使 /etc/mime.types 可用于 caddy,从而正确生成 Content-Type 标头。

另请参阅