Caddy Server 访问频率限制,请求多次将返回 429 状态码。实现此功能需要安装 http.ratelimit 插件,可以在下载页下载时选择此插件。

举例

语法:

ratelimit methods path rate burst unit
...or...
ratelimit methods rate burst unit {
    whitelist CIDR
    resources
}
  • methods 请求方法,例如 get(多个方法 , 隔开,可以 * 表示所有方法)
  • path 路径,例如 //api
  • rate 单位时间请求次数
  • burst 客户端可超过的最大次数,不能小于单位时间请求次数
  • unit 单位时间(当前支持:second,minute,hour,day,week)
  • whitelist 白名单
  • resources 目录或文件路径,每行一个

例如:

单个资源:

127.0.0.1:8080 {
    proxy / 10.10.0.222:8080
    gzip
    log /var/log/caddy/test.log
    ratelimit * / 1 1 second
    # 表示所有方法,所有路径,每秒最多请求1次
}

多个资源的表示:

127.0.0.1:8080 {
    proxy / 10.10.0.222:8080
    gzip
    log /var/log/caddy/test.log
    ratelimit get,post 1 1 second {
        whitelist 127.0.0.1/32
        whitelist 10.10.0.0/16
        /api/
        ^/dist/path
    }
    # get、post方法
    # 每秒最多请求1次,白名单除外,路径 ^/dist/path 除外
    # 注意!想要限制 /api/,同时排除 ^/api/stats 不会生效
}

参考

https://caddyserver.com/docs/http.ratelimit
https://github.com/xuqingfeng/caddy-rate-limit