随笔

Caddy Web Server

昨晚忽然想到 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

caddy-1.png

caddy-2.png

最后网站就会自动获取证书,并且自动启用 HTTP/3,多懂事啊。

本文链接:https://note.lilonghe.net/post/caddy-web-server.html

-- EOF --