Caddy v2 安装与配置

提供web服务的还有Nginx 和Apache,为什么选用Caddy,因为他简单,可以自动申请SSL证书。
随着caddy v2 的到来,原先的v1安装与https加密认证的配置方式已经不再适用。本文正是自身在更换v2版本时所经历的过程总结。

安装 caddy v2

  1. 添加caddy官方的软件包源到Ubuntu的包管理器中,并通过管理器直接安装caddy v2,安装完成会自动运行caddy服务。
1
2
3
4
5
6
#添加caddy官方的软件源,更新软件包并安装caddy v2
#
$ echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
| sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
$ sudo apt update
$ sudo apt install caddy

一切顺利的话将会出现如下内容:

1
2
3
4
5
...
Unpacking caddy (2.0.0) ...###.................................]

Setting up caddy (2.0.0) ...###############....................]
...
  1. 查看caddy的版本信息,以验证是否安装成功
    1
    2
    $ caddy version
    # v2.0.0 h1:pQSaIJGFluFvu8KDGDODV8u4/QRED/OPyIR+MWYYse8=

    本文使用的Linux发行版为:Ubuntu 20.04 LTS。Debian, Ubuntu, Raspbian,通用。其他发行版请自行参阅caddy v2 的官方文档进行安装。

caddy的服务管理

1
2
3
4
5
6
systemctl enable caddy.service   # 开机启动
systemctl start caddy.service # 启动
systemctl stop caddy.service # 停止
systemctl restart caddy.service # 重启
systemctl status caddy.service # 查看状态
systemctl daemon-reload # 重载配置

配置 caddy v2

安装成功后,默认生成的caddy配置文件Caddyfile中的部分信息,如下:

1
2
3
4
5
6
7
8
9
10
11
# domain name.
:80

# Set this path to your site's directory.
root * /usr/share/caddy

# Enable the static file server.
file_server

# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080

自动生成证书的位置:$HOME/.caddy或者使用caddy -log stdout查看日志输出信息

默认的Caddyfile配置为单个站点配置。且为http协议,因为在配置中显式申明了:80,如果没有显式的申明80端口,默认将使用https协议。

配置多个站点的写法

1
2
3
4
5
6
7
8
9
10
11
12
# 站点1
# 在配置的虚拟主机域名后使用{},该主机的所有配置信息包含在{}中。
localhost {
respond "Hello, world!"
}

# 站点2
# 在配置的虚拟主机域名后使用{},该主机的所有配置信息包含在{}中。
localhost:2016 {
respond "Goodbye, world!"
}
...

更多配置项可以参看官方文档

Caddyfile 配置文件示例

1
2
3
4
5
6
7
example.com {
root /var/www/example.com # 如果不需要在本地放置站点内容,可以不需要。
gzip
reverse_proxy /ray localhost:10000 {
header_up -Origin
}
}

说明:

  • root /var/www/example.com:example.com 域名指向的网站根目录;
  • proxy /ray localhost:10000 { … }:将特定的路径请求(这里指发送到/ray的请求),转发到主机本地端口10000。

修改了配置文件后,需要重新就加载caddy服务:systemctl restart caddy.service

在v1中,通过clouflare tls { dns cloudflare } 来申请https加密认证,现在caddy v2中自动进行了证书的申请。