Nginx是一款非常流行的Web服务器,在Github上已有
16K+Star,我们经常用它来做静态资源托管或反向代理。最近发现了一款全新的Web服务器Caddy,Star数超越Nginx,标星38K+Star。试用了一下Caddy,发现它使用起来比Nginx优雅多了,功能也很强大,推荐给大家!
SpringBoot实战电商项目mall(50k+star)地址:github.com/macrozheng/…
Caddy简介
Caddy是一款功能强大,扩展性高的Web服务器,目前在Github上已有38K+Star。Caddy采用Go语言编写,可用于静态资源托管和反向代理。

Caddy具有如下主要特性:
- 对比Nginx复杂的配置,其独创的
Caddyfile配置非常简单; - 可以通过其提供的
Admin API实现动态修改配置; - 默认支持自动化HTTPS配置,能自动申请HTTPS证书并进行配置;
- 能够扩展到数以万计的站点;
- 可以在任意地方执行,没有额外的依赖;
- 采用Go语言编写,内存安全更有保证。
安装
首先我们直接在CentOS 8上安装Caddy,使用DNF工具安装无疑是最简单的,Docker安装方式之后也会介绍。
- 使用如下命令通过DNF工具安装Caddy,安装成功后Caddy会被注册成系统服务;
dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy
复制代码
- 使用
systemctl status caddy查看Caddy的状态,可以发现Caddy已被注册为系统服务,但是还没开启。

使用
下面我们体验下Caddy的基本使用,对于Web服务器来说都是常用的操作,你准能用的上!
基本使用
首先我们来个Caddy的入门使用,让Caddy运行在
2015端口上并返回Hello, world!。
- 直接使用
caddy命令将输出Caddy的常用命令,基本看介绍就知道如何使用了,标出来的是常用命令;

- 使用
caddy start命令可以让Caddy服务在后台运行;

- Caddy默认使用JSON格式的配置文件,但由于JOSN格式配置书写比较麻烦,又提供了
Caddyfile这种更加简洁的配置形式,使用如下命令能自动把Caddyfile转化为JSON配置;
caddy adapter
复制代码
- 我们可以先创建一个名称为
Caddyfile的文件,文件内容如下,然后使用caddy adapter将它转换为JSON配置,再使用caddy reload使配置生效,该配置将监听2015端口,并返回Hello, world!;
:2015
respond "Hello, world!"
复制代码
- 然后我们使用curl命令访问
localhost:2015,将返回指定的信息;

- 当然我们还可以使用Caddy提供的
Admin API来查看配置信息,使用如下命令即可;
curl localhost:2019/config/
复制代码
- 当前JSON配置如下,如果你直接使用JSON配置的话需要书写如下配置,使用
Caddyfile确实方便很多!
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [":2015"],
"routes": [{
"handle": [{
"body": "Hello, world!",
"handler": "static_response"
}]
}]
}
}
}
}
}
复制代码
Caddyfile基本语法
- 下面案例将使用
Caddyfile来进行配置,我们有必要了解下它的语法,Caddyfile的具体语法规则如下。

- 介绍下上图中的关键字,有助于理解。
| 关键字 | 解释 | 使用 |
|---|---|---|
| Global options block | 服务器全局配置 | 可用于配置是否启用HTTPS和Admin API等 |
| Snippet | 可以复用的配置片段 | 定义好后认可以通过import关键字引用 |
| Site Block | 单个网站配置 | 通过file_server可以配置静态代理,通过reverse_proxy可以配置动态代理 |
| Matcher definition | 匹配定义 | 默认情况下指令会产生全局影响,通过它可以指定影响范围 |
| Comment | 注释 | 使用#符号开头 |
| Site address | 网站地址 | 默认使用HTTPS,如需开启HTTP,需要指定http://开头 |
| Directive | 指令 | 指令赋予了Caddy强大的功能 |
作者:MacroZheng
链接:https://juejin.cn/post/7085519712901136392
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Caddy是一款用Go语言编写的Web服务器,以其简洁的Caddyfile配置、自动HTTPS和强大的Admin API脱颖而出。相比Nginx,Caddy的配置更为简单,支持动态修改配置,且默认即支持HTTPS,适合静态资源托管和反向代理。安装Caddy可以通过DNF在CentOS8上完成,并可通过Caddyfile进行便捷配置,提供类似返回'Hello,world!'等基本使用操作。
2352

被折叠的 条评论
为什么被折叠?



