最近搭建服务了解到了Caddy这个反向代理服务器,它比Nginx轻量,Caddy内置了一个ACME(Automatic Certificate Management Environment)客户端,它能够自动与 Let's Encrypt 等证书颁发机构通信,获取免费的SSL/TLS证书。免去手动配置的流程,配置代理也非常简单。
下面以ubuntu20为例,记录下Caddy服务的搭建流程。
初始工作
首先通过 sudo apt update
命令更新系统的软件包列表,然后安装所需要的依赖
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
APT存储库
Caddy官方提供了GPG密钥和APT存储库,以便用户可以轻松地通过APT安装Caddy。首先,添加Caddy的GPG密钥:
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
更新apt软件包列表
sudo apt update
最后就可以通过apt来安装Caddy了
sudo apt install caddy
Caddy配置
Caddy配置文件一般默认在 /etc/caddy/Caddyfile
目录下,如果直接 systemctl start caddy
命令启动,就会使用该目录下的配置文件,我们也可以通过 caddy run --config /path/to/Caddyfile
来制定配置,一个简单的配置如下。
:80 {
# 静态文件目录
root * /usr/share/caddy
# 开启静态服务
file_server
}
如果配置域名反向代理到目标服务,直接新增以下配置即可,非常简单。
www.kelen.cc {
reverse_proxy localhost:8080
}
上述配置,Caddy会自动帮我们申请一个 www.kelen.cc 的免费证书,关键还会帮我们自动续期。简直无敌。证书的目录在 /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/
里,如果有需要可以在此目录查看响应的证书文件。
Caddy常用命令
- 停止Caddy服务
sudo systemctl stop caddy
- 启动Caddy服务
sudo systemctl start caddy
- 设置Caddy开启自启
sudo systemctl enable caddy
- 查看Caddy服务状态
sudo systemctl status caddy