昨晚忽然想到 Caddy,就去官网看了看,被它的一些 feature 吸引住了:自动支持并切换到 HTTPS,自动支持 HTTP/2、HTTP3,这比自己苦哈哈的又是编译又是签名的舒服太多了,就花了点时间把 nginx 换成 Caddy。
Caddy 的配置文档最开始看到真的很难用,因为文档没有给刚接触的人一个渐进式理解的机会,就跟画马一样,案例是几个长方形组合,结果实际要画的是徐悲鸿的马。
Caddy 不像 nginx 一样匹配逻辑全都放在 location 语句里,而是把原本里面的全都提到了外面,后来我又发现放在里面也可以,总之文档很乱没有一个统一的说法。
先配置反向代理
reverse_proxy /* :8080 {
header_up Host {upstream_hostport}
header_up X-Real-IP {remote_host}
}
然后配置静态文件
handle /static/* {
root * /var/www/
file_server
header Cache-Control "max-age: 31356000, public"
}
这样其实已经可以满足普通的网站了,但还有一些规则需要加上,比如屏蔽某度的爬虫,还有阻止从某度跳转过来的访问。
@denyUserAgent {
header_regexp User-Agent (?:python|Baiduspider)
}
@denyReferer {
header Referer "*www.baidu.com*"
}
respond @denyUserAgent 412 {
close
}
respond @denyReferer 412 {
close
}
配置好之后,停掉 nginx,然后启动 caddy
nginx -s stop
caddy reload --config note.lilonghe.net --adapter caddyfile
最后网站就会自动获取证书,并且自动启用 HTTP/3,多懂事啊。