Caddy2使用小记
将Caddy升级到 Caddy2, 记录一下。 2.0版本改变挺大的。
环境
腾讯云香港轻量, Debian 10, 秒不可言。
安装caddy2
使用镜像或者源安装(推荐源安装)
|
|
使用二进制安装
|
|
配置systemd
# /etc/systemd/system/caddy.service
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target
[Service]
User=caddy
Group=caddy
EnvironmentFile=-/etc/caddy/caddy.env
ExecStart=/usr/local/bin/caddy2 run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy2 reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Caddyfile使用
目前 Caddy2 官方推荐配置文件使用 JSON 格式,或者,不使用配置文件,直接调用 admin API。但我推荐使用 Caddyfile, 日常维护起来要方便一些
|
|
官方虽然说从v1升级到v2很简单,我信你的鬼
示例
{
# 开启实验性 HTTP/3
experimental_http3
# 测试通过的生产环境中去除该项
# acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}
(common_headers) {
encode gzip
}
(secure_headers) {
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
}
}
ci.hk2.godu.dev {
tls ops.ysicing@gmail.com
import common_headers
import secure_headers
reverse_proxy 169.254.0.2:80
}
cr.hk2.godu.dev {
tls ops.ysicing@gmail.com
import common_headers
import secure_headers
reverse_proxy 127.0.0.1:404
}
:80 {
respond "2020 hello"
}
配置说明
caddy2 引入了全局选项global options的概念,并且如果全局选项存在,必须位于 Caddyfile 的开头
# 全局配置
{
# 开启实验性 HTTP/3
experimental_http3
# 测试通过的生产环境中去除该项
# acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}
- 支持HTTP/3, 工作在 UDP 协议上,需要放行443 UDP
- Let’s Encrypt 测试环境,默认caddy2是处于生产环境,测试时可改为测试环境
欢迎关注我的公众号“缘生小助手”,原创实践文章第一时间推送。
