简介

Caddy 是一个简单易用的 Web 服务器,它支持自动配置 HTTPS,自动申请和更新证书,支持 HTTP/2,支持反向代理,支持 FastCGI,支持 WebSockets,支持 Markdown 渲染等等。

Caddy 2Caddy 的下一个版本,它是一个全新的版本,使用 Go 语言编写,支持模块化插件,支持配置文件,支持自定义中间件等等。

比起 NginxApacheCaddy 2 更加简单易用。

安装

以在 Ubuntu 系统上安装 Caddy 2 为例:

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

配置

反向代理

Caddy 2 的配置文件是 Caddyfile,它的语法非常简单。

以反向代理为例:

example.com {
    reverse_proxy 127.0.0.1:3000
}

这个配置文件表示将 example.com 的请求转发到 127.0.0.1:3000

不标明协议时,默认启用 HTTPSCaddy 2 会自动申请证书。

设置请求大小限制

可以设置客户端请求的大小限制,这里设置为 10MB:

example.com {
    request_body {
        max_size 10MB
    }
    reverse_proxy 127.0.0.1:3000
}

设置请求头

可以通过设置请求头来传递 HostIP

example.com {
    reverse_proxy 127.0.0.1:3000 {
            header_up Host {upstream_hostport}
            header_up X-Real-IP {remote_host}
    }
}

HTTP

Caddy 2 默认监听 80 端口,可以通过 http:// 来访问。

反向代理 HTTP 请求:

http://example.com {
    reverse_proxy 127.0.0.1:3000
}

运行

可以在当前目录创建一个 Caddyfile 文件,这样可以不指定配置文件路径。

如果需要指定配置文件路径,可以使用 --config 参数。

启动

使用 start 命令后台启动 Caddy

caddy start --config /path/to/Caddyfile

停止

使用 stop 命令停止 Caddy

caddy stop

重载配置

使用 reload 命令重载配置:

caddy reload --config /path/to/Caddyfile

参考