本文使用“署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)”进行许可。
商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于相同的协议分发您贡献的作品。
Caddy 作为一个 web server 类应用,最大的特点就是易用——尤其是与 Nginx 对比时。一两行命令就可以启动一个可用于生产环境的站点,实在是非常吸引人。
除了易用的特点,它还:
就 Nginx 在同类方案中的地位,完全替代 Nginx 显然是不太可能,但是如果你的需求只是托管一个静态站点/反代一个端口(包括多个 upstream 作负载均衡)/重定向一个网址之类简单需求,完全可以在 30 分钟内切换到 Caddy,而不必编写复杂的 Nginx 配置文件或者使用第三方 Nginx 管理程序(比如那个会占 800 多 M 储存的 Nginx Proxy Manager)了。
Note
实际上,现在可以搜到的 Caddy 的缺点有不少是 v1 时代的缺点,现在的 v2 版本提供了大量新功能,我认为对轻度用户是完全足够了。(当然,如果 Nginx 用的很舒服,也没必要换)
目前来看 Caddy 最大的缺点是没有内置的反向代理缓存,需要自己加第三方插件编译,或者用插件作者提供的 Docker Image。
Caddy 的文档以例子为主,即使是命令列表也都带例子,非常易懂。
有中文文档(应该是个人维护的,不过做的很好)。原文档:
Getting Started - Caddy Documentation
非常方便的安装教程:
对于使用 apt
作为包管理器的发行版:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
如果把 systemd 服务配胡了,或者想通过 Docker 启动(不推荐),可以参考以下链接:
和 Nginx 比起来实在是太方便了,啥都不用搞,HTTPS 都是自动生成的
虽然可以选择命令行使用或者用多个 Caddyfile,但是我更倾向于可以直接在 /etc/caddy/Caddyfile
里改。
一个用于本博客的示例,包括了文件服务器(用于静态网页,包含了传输压缩和 404 处理),网页重定向,以及端口反代
yfi.moe {
# 启用 gzip 压缩
encode gzip
# 指定网站根目录并启动文件服务器
root * /var/www/blog
file_server
# 处理404错误
handle_errors {
@404 {
expression {http.error.status_code} == 404
}
rewrite @404 /404.html
file_server
}
}
blog.yfi.top {
# 301 重定向到新网址
redir https://yfi.moe{uri} permanent
}
i.yfi.moe {
# 反代到端口 24812
reverse_proxy 127.0.0.1:24812
}
然后 sudo systemctl restart caddy
即可,不用管证书(只要域名已经解析到该 VPS),每个网站的配置都一目了然。
简单贴一些 Caddy 文档的链接,这些应该是比较常用的
简单了解 Caddyfile,比命令行运行指令更容易迁移
反向代理,适用于非静态的应用
静态文件,用于部署静态博客站点
redir,用于重定向
还有更多功能,反正我是用不太到了。
本文使用“署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)”进行许可。
商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于相同的协议分发您贡献的作品。