Caddy 入门教程

Caddy 是一个基于 Go 语言的 web 服务器,支持HTTP/2、HTTP/3、自动HTTPS、ZSTD压缩等特性。它可以作为轻量级的反向代理、负载均衡器和 HTTP 服务器。本教程将介绍如何上手Caddy。

引入

Caddy 是一个强大的、可扩展的平台,用于为您的网站、服务和应用程序提供服务,用 Go 编写。如果您是 Caddy 的新手,那么您提供 Web 服务的方式即将发生变化。

配置速览

Caddy 的配置文件是用 Caddyfile 编写的。Caddyfile 是一个简单的文本文件,其中包含指令以定义网站、服务和应用程序。下面是一个简单的 Caddyfile 配置示例:

  1. 反向代理
:80 {
    reverse_proxy localhost:8080
}
  1. 静态网页/文件
:80 {
    root /var/www/html
    file_server
}

从上面的配置中,我们可以看到 Caddy 的配置非常简单, 使用极短的配置即可达到目的。

安装

此处选用 WJQSERVER-STUDIO/caddy 作为演示。演示环境的内核与架构为Linux/AMD64,发行版为Debian 12

下载并解压

下载Caddy压缩包

wget -O caddy.tar.gz https://github.com/WJQSERVER-STUDIO/caddy/releases/download/daily/caddy-linux-amd64.tar.gz

解压压缩包至指定目录

tar -zxvf caddy.tar.gz -C /root/data/caddy

配置systemd服务

  1. 创建caddy.service文件
cat > /etc/systemd/system/caddy.service << EOF
[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
ExecStart=/root/data/caddy/caddy run --config /root/data/caddy/Caddyfile
ExecReload=/bin/kill -USR1 $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
EOF
  1. 启动服务
systemctl start caddy
  1. 开机自启
systemctl enable caddy
  1. 验证服务状态
systemctl status caddy