Caddy 不完全食用指北
企业级的 Web 服务器接触过:Nginx、Apache、IIS、Tomcat,前段时间打算将网路服务全部迁移到搬瓦工 VPS 上去,由于配置较低,就选用了一个开源的 Web 服务器: Caddy;它是一个 Go 编写的 Web 服务器,类似于 Nginx,完全可以作为中小型站点 Web 服务器。
特性
- 自动 HTTPS:自动 TLS 功能,无需额外配置
- 配置简便性:两种配置方式,简洁的 Caddyfile、功能丰富的 JSON
- 配置灵活性:通过 JSON API,Caddy 允许实时更新配置
- 代理能力:HTTP 反向代理功能强大且灵活
- 静态资源托管:可以作为静态文件服务器
- 全平台支持:支持 Linux、Windows、macOS 等操作系统
- 高性能:Go 语言的开发,保证高性能和内存安全
安装
这些年的习惯,能用二进制的直接采用二进制安装添加系统服务1
2
3wget -c https://caddyserver.com/api/download --no-check-certificate -O caddy
chmod a+x caddy
mv caddy /usr/bin/vi /etc/systemd/system/caddy.service
:然后就可以使用 systemctl 启停 Caddy 服务了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target1
2
3
4
5systemctl daemon-reload
systemctl enable caddy
systemctl status caddy
systemctl start caddy
systemctl reload caddy配置
Caddy 的配置文件可以用 JSON,不过个人感觉 Caddyfile 更简洁,也更加接近 nginx,没什么切换门槛基础语法
|指令|说明|
|—-|—-|
|root|指定网站的根目录|
|tls|用于自动获取和管理 TLS/SSL 证书|
|proxy|用于配置反向代理|
|rewrite|用于重写 URL|
|gzip|开启 GZIP 压缩|
|auth|配置基本的身份验证|
|cache|配置缓存设置|
|log|配置日志输出|示例配置
vi /etc/caddy/Caddyfile
:更多配置见官方文档:Caddyfile Tutorial1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37yuwei.cc {
root * /var/www/html ##静态网站根目录
tls work@yuwei.cc ##自动配置 TLS 证书
encode gzip ##开启 gzip 压缩
log /var/log/caddy/access.log combined ##指定日志文件
##反向代理到后端服务
proxy /list 127.0.0.1:5244 {
websocket ##WebSocket 协议
transparent ##透明代理
file_server browse ##启动静态资源
}
auth /admin user:password ##基本身份验证
}
##配置带域名的反向代理
list.vioe.cc {
reverse_proxy 127.0.0.1:5244
tls work@yuwei.cc
log {
output file /var/log/caddy/alist.log
}
}
##配置带域名的重定向
vioe.cc {
##网站路由
route {
/static/* {
gzip
fileserver /var/www/static
}
/api/* {
proxy / 127.0.0.1:5244
}
/* {
redir https://baidu.com{uri}
}
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 君玉自牧!