Caddy 模块
在站点块中加入一条 ipscanner 指令,每位访客都会在 reverse_proxy 之前接受检测。默认以 Monitor 模式运行,切换前不会拦截任何请求。
免费,MIT 许可证Caddy 2.8+
访问日志
流量类别
每位访客对应一个类别。可在控制台中拦截某个类别,也可写入 block_classes。
安装
export IPSCANNER_API_KEY=<your API key>使用 xcaddy 或在 Docker 中构建。需要 Caddy 2.8 或更高版本。
xcaddy build --with github.com/ipscanner/ipscanner-caddy
./caddy list-modules | grep ipscannerSite ID
site_4fQ8nZ2kLm7xR1vT9cBw
无需全局 order 行:它在 basic_auth 和 reverse_proxy 之前运行。
example.com {
ipscanner {
site_id site_4fQ8nZ2kLm7xR1vT9cBw
}
reverse_proxy localhost:8080
}不使用站点
在配置中设置模式和要拦截的类别。ipscanner /app/* 这样的匹配器可将检测限定在部分路径。
example.com {
ipscanner {
mode enforce
block_classes malicious_automation tor
}
reverse_proxy localhost:8080
}占位符
由指令设置,可用于 log_append、vars 匹配器和请求头。
| 占位符 | 取值 |
|---|---|
{http.vars.ipscanner.status}ok, error, timeout, backoff, skipped | ok, error, timeout, backoff, skipped |
{http.vars.ipscanner.class}流量类别,状态为 ok 时设置 | 流量类别,状态为 ok 时设置 |
{http.vars.ipscanner.action}allow, flag, block, would_flag, would_block | allow, flag, block, would_flag, would_block |
log_append ipscanner_class {http.vars.ipscanner.class}
log_append ipscanner_action {http.vars.ipscanner.action}
@flagged vars ipscanner.action flag
request_header @flagged X-Review 1客户端 IP
模块检测 Caddy 解析出的客户端 IP。请信任您的代理,trusted_proxies_strict 可防止访客伪造中间跳。
{
servers {
trusted_proxies static 10.0.0.0/8
trusted_proxies_strict
}
}设置
均为可选项。JSON 配置使用相同的名称。
| 子指令 | 默认值 | 作用 |
|---|---|---|
api_keyAPI 密钥。未设置时所有请求放行。 | {env.IPSCANNER_API_KEY} | API 密钥。未设置时所有请求放行。 |
site_id控制台中的站点,决定模式和策略。 | 空 | 控制台中的站点,决定模式和策略。 |
modemonitor 或 enforce。设置站点后仅 monitor 生效。 | monitor | monitor 或 enforce。设置站点后仅 monitor 生效。 |
block_classes未设置站点时,Enforce 模式下拦截的类别。 | malicious_automation | 未设置站点时,Enforce 模式下拦截的类别。 |
timeout单次检测的时间上限。 | 1.5s | 单次检测的时间上限。 |
cache_ttl每位访客的判定缓存时长。 | 10m | 每位访客的判定缓存时长。 |
cache_size判定缓存条目数。 | 10000 | 判定缓存条目数。 |
policy_ttl站点策略的缓存时长。 | 30s | 站点策略的缓存时长。 |
skip_paths不检测的路径(正则表达式)。 | 静态资源 | 不检测的路径(正则表达式)。 |
block_message403 页面的文字。 | Blocked by IPScanner edge guard. | 403 页面的文字。 |
debug调试响应头,并为每次判定记录一行日志。 | 关闭 | 调试响应头,并为每次判定记录一行日志。 |
api_urlAPI 基础 URL。 | https://ipscanner.io | API 基础 URL。 |
始终放行
skip_paths 中的路径。常见问题