mod_prison

模块简介

mod_prison根据自定义的条件,限定单位时间用户的访问次数。

基础配置

配置描述

模块配置文件: conf/mod_prison/mod_prison.conf

配置项 描述
Basic.ProductRulePath String
规则配置文件路径

配置示例

  1. [Basic]
  2. 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 修改请求头部

配置示例

  1. {
  2. "Version": "20190101000000",
  3. "Config": {
  4. "example_product": [{
  5. "Name": "example_prison",
  6. "Cond": "req_path_prefix_in(\"/prison\", false)",
  7. "accessSignConf": {
  8. "url": false,
  9. "path": false,
  10. "query": [],
  11. "header": [],
  12. "Cookie": [
  13. "UID"
  14. ]
  15. },
  16. "action": {
  17. "cmd": "CLOSE",
  18. "params": []
  19. },
  20. "checkPeriod": 10,
  21. "stayPeriod": 10,
  22. "threshold": 5,
  23. "accessDictSize": 1000,
  24. "prisonDictSize": 1000
  25. }]
  26. }
  27. }