安利一下我最近写的两个caddy插件
我个人 Caddy 粉哈,习惯 Caddy 一梭子,从我历史博客中就可以看出来。最近写了两个 Caddy 的插件,geocn
和 gfw
.
源码及镜像
以下是我构建好的镜像,可以根据自己的环境拉取
- ysicing/caddy2
- ghcr.io/ysicing/caddy2
- registry.cn-beijing.aliyuncs.com/k7scn/caddy2
- ccr.ccs.tencentyun.com/k7scn/caddy2
源码构建
需要 go 环境了
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
xcaddy build \
--with github.com/caddyserver/jsonc-adapter \
--with github.com/caddy-dns/cloudflare \
--with github.com/caddy-dns/tencentcloud \
--with github.com/caddy-dns/alidns \
--with github.com/ysicing/caddy2-geocn \
--with github.com/ysicing/caddy2-gfw \
--with github.com/mholt/caddy-dynamicdns \
--with github.com/mholt/caddy-events-exec \
--with github.com/WeidiDeng/caddy-cloudflare-ip \
--with github.com/xcaddyplugins/caddy-trusted-cloudfront \
--with github.com/mholt/caddy-l4 \
--with github.com/mholt/caddy-webdav \
--with github.com/mholt/caddy-ratelimit
插件 geocn
- 源码:https://github.com/ysicing/caddy2-geocn
- 用途:识别来源 ip 是否为中国 ip,我的大部分服务都开启了这个,只针对大陆放行,甚至部分服务只针对部分省市(误判比较大,后续有需要也可以开源 😄)
@china {
geocn
}
file_server @china {
root ./docker/example/deny
}
上面是默认参考,正常情况下不需要调整,GeoIP 数据源来自 Hackl0us/GeoIP2-CN,支持自定义
geocn {
georemote 你的自定义地址
}
插件 gfw
- 源码:https://github.com/ysicing/caddy2-gfw
- 用途:想实现类似宝塔 waf 的功能,目前只是初步实现了,还在测试中,误判比较大 😂
{
order gfw before respond
}
:80 {
gfw {
# 基本规则配置
block_rule ip:1.2.3.4
block_rule url:/admin
block_rule ua:curl
block_rule_file /path/to/rules.txt
ttl 24h
# 额外安全检测(默认关闭)
enable_extra true
}
}
目前是所有实例共享黑名单的,命中就 1 天黑名单直接返回 403,之前想的是命中后触发 hook 执行 iptables 封禁 ip,但是容器跑的好像不太方便。
最后
大家对 Caddy 插件有什么的需求或者想法么?
