http.ipfilter

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

完整文档

示例

过滤特定的IP或CIDR范围

  1. ipfilter / {
  2. rule block
  3. ip 70.1.128.0/19 2001:db8::/122 9.12.20.16
  4. }

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

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

  1. ipfilter / {
  2. rule allow
  3. database /data/GeoLite.mmdb
  4. country US JP
  5. }

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

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

定义块页面

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

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

多个路径

  1. ipfilter /notglobal /secret {
  2. rule allow
  3. ip 84.235.124.4
  4. }

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

多个块

  1. ipfilter / {
  2. rule allow
  3. ip 32.55.3.10
  4. }
  5. ipfilter /webhook {
  6. rule allow
  7. ip 192.168.1.0/24
  8. }

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