mod_prison
模块简介
mod_prison根据自定义的条件,限定单位时间用户的访问次数。
基础配置
配置描述
模块配置文件: conf/mod_prison/mod_prison.conf
| 配置项 | 描述 |
|---|---|
| Basic.ProductRulePath | String 规则配置文件路径 |
配置示例
[Basic]ProductRulePath = mod_prison/prison.data
规则配置
配置描述
规则配置文件: conf/mod_prison/prison.data
| 配置项 | 描述 |
|---|---|
| Version | String 配置文件版本 |
| Config | Object 各产品线的prison规则列表 |
| Config{k} | String 产品线名称 |
| Config{v} | Array prison规则列表 |
| Config{v}[] | Object 单条prison规则 |
| Config{v}[].Cond | String 规则条件, 语法详见Condition |
| Config{v}[].AccessSignConf | Object 计算请求签名的配置,其中签名被用来确定是否为同类请求 |
| Config{v}[].AccessSignConf.UseSocketIP | Boolean 计算请求签名时是否使用SocketIP |
| Config{v}[].AccessSignConf.UseClientIP | Boolean 计算请求签名时是否使用ClientIP |
| Config{v}[].AccessSignConf.UseConnectID | Boolean 计算请求签名时是否使用ConnectID |
| Config{v}[].AccessSignConf.UseUrl | Boolean 计算请求签名时是否使用请求的Url |
| Config{v}[].AccessSignConf.UseHost | Boolean 计算请求签名时是否使用host |
| Config{v}[].AccessSignConf.UsePath | Boolean 计算请求签名时是否使用请求Path |
| Config{v}[].AccessSignConf.UseHeaders | Boolean 计算请求签名时是否使用header |
| Config{v}[].AccessSignConf.UrlRegexp | String 计算请求签名时使用URL中匹配了UrlRegexp的子串 |
| Config{v}[].AccessSignConf.[]Qeury | Array 计算请求签名时使用的query key |
| Config{v}[].AccessSignConf.[]Header | Array 计算请求签名时使用的header key |
| Config{v}[].AccessSignConf.[]Cookie | Array 计算请求签名时使用的cookie key |
| Config{v}[].Action | Object 规则动作 |
| Config{v}[].Action.Cmd | String 规则动作名称 |
| Config{v}[].Action.Params | Array 规则动作参数列表 |
| Config{v}[].CheckPeriod | Integer 检测周期(秒) |
| Config{v}[].StayPeriod | Integer 命中规则后的封禁时长 : 惩罚时长(秒) |
| Config{v}[].Threshold | Integer 限流阈值 |
| Config{v}[].AccessDictSize | Integer 访问统计表大小 |
| Config{v}[].PrisonDictSize | Integer 访问封禁表大小 |
模块动作
| 动作 | 描述 |
|---|---|
| CLOSE | 关闭用户连接 |
| FINISH | 回复403响应并关闭用户连接 |
| PASS | 正常转发请求 |
| REQ_HEADER_SET | 修改请求头部 |
配置示例
{"Version": "20190101000000","Config": {"example_product": [{"Name": "example_prison","Cond": "req_path_prefix_in(\"/prison\", false)","accessSignConf": {"url": false,"path": false,"query": [],"header": [],"Cookie": ["UID"]},"action": {"cmd": "CLOSE","params": []},"checkPeriod": 10,"stayPeriod": 10,"threshold": 5,"accessDictSize": 1000,"prisonDictSize": 1000}]}}