http.ipfilter

ipfilter指令增加了基于客户端IP地址允许或阻止请求的能力。

完整文档

示例

过滤特定的IP或CIDR范围

ipfilter / {
    rule block
    ip 70.1.128.0/19 2001:db8::/122 9.12.20.16
}

caddy会阻止IP地址分别属于70.1.128.0/192001:db8::/122范围的客户端,或者显示地IP为9.12.20.16的客户端。

基于国家ISO代码过滤客户端

ipfilter / {
    rule allow
    database /data/GeoLite.mmdb
    country US JP
}

在Caddyfile这样配置的话,Caddy将只服务于来自美国或日本的用户。

使用国家代码进行过滤需要本地的Geo数据库副本,可以从MaxMind免费下载。

定义块页面

ipfilter / {
    rule allow
    blockpage default.html
    ip 55.3.4.20 2e80::20:f8ff:fe31:77cf
}

Caddy将只服务这两个ip,其他人将只能访问到default.html

多个路径

ipfilter /notglobal /secret {
    rule allow
    ip 84.235.124.4
}

只允许IP为84.235.124.4的用户访问/notglobal/secret

多个块

ipfilter / {
    rule allow
    ip 32.55.3.10
}

ipfilter /webhook {
    rule allow
    ip 192.168.1.0/24
}

你可以使用尽可能多的ipfilter块,上面的意思是:只允许32.55.3.10,其他人都被阻止,除非他的IP是在192.168.1.0/24范围内且请求的是/webhook网址。