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
}]
}
}