Caddy —— 轻松换掉你的 Nginx

2023-12-06
修改于 2024-01-09

Caddy 作为一个 web server 类应用,最大的特点就是易用——尤其是与 Nginx 对比时。一两行命令就可以启动一个可用于生产环境的站点,实在是非常吸引人。

除了易用的特点,它还:

  • 自动 HTTPS:帮你申请证书,如果你的域名 DNS 已经指向了该服务器;
  • 默认的 HTTP/1.1, HTTP/2 和 HTTP/3 支持;
  • 通过 JSON 实现的强大配置自定义。

就 Nginx 在同类方案中的地位,完全替代 Nginx 显然是不太可能,但是如果你的需求只是托管一个静态站点/反代一个端口(包括多个 upstream 作负载均衡)/重定向一个网址之类简单需求,完全可以在 30 分钟内切换到 Caddy,而不必编写复杂的 Nginx 配置文件或者使用第三方 Nginx 管理程序(比如那个会占 800 多 M 储存的 Nginx Proxy Manager)了。

Note

实际上,现在可以搜到的 Caddy 的缺点有不少是 v1 时代的缺点,现在的 v2 版本提供了大量新功能,我认为对轻度用户是完全足够了。(当然,如果 Nginx 用的很舒服,也没必要换)
目前来看 Caddy 最大的缺点是没有内置的反向代理缓存,需要自己加第三方插件编译,或者用插件作者提供的 Docker Image。

Caddy 的文档以例子为主,即使是命令列表也都带例子,非常易懂。

入门指南 — Caddy v2中文文档

有中文文档(应该是个人维护的,不过做的很好)。原文档:

Getting Started - Caddy Documentation

安装

非常方便的安装教程:

安装 — Caddy v2中文文档

对于使用 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 启动(不推荐),可以参考以下链接:

保持Caddy运行 — Caddy v2中文文档

使用

和 Nginx 比起来实在是太方便了,啥都不用搞,HTTPS 都是自动生成的

虽然可以选择命令行使用或者用多个 Caddyfile,但是我更倾向于可以直接在 /etc/caddy/Caddyfile 里改。

一个用于本博客的示例,包括了文件服务器(用于静态网页,包含了传输压缩和 404 处理),网页重定向,以及端口反代

blog.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.yunfi.top {
    # 301 重定向到新网址
	redir https://blog.yfi.moe{uri} permanent
}

i.yfi.moe {
    # 反代到端口 24812
	reverse_proxy 127.0.0.1:24812
}

然后 sudo systemctl restart caddy 即可,不用管证书(只要域名已经解析到该 VPS),每个网站的配置都一目了然。

更多配置

简单贴一些 Caddy 文档的链接,这些应该是比较常用的

简单了解 Caddyfile,比命令行运行指令更容易迁移

Caddyfile 快速入门 — Caddy v2中文文档

反向代理,适用于非静态的应用

反向代理快速入门 — Caddy v2中文文档

静态文件,用于部署静态博客站点

静态文件快速入门 — Caddy v2中文文档

redir,用于重定向

redir — Caddy v2中文文档

还有更多功能,反正我是用不太到了。

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v3.1.3