Caddy
Caddy 是一个支持 HTTP/2 的 Web 服务器,并带有自动 HTTPS 功能。
安装
插件
如果您需要 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 标头。