mod_prison

模块简介

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

基础配置

配置描述

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

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

配置示例

  1. [Basic]
  2. ProductRulePath = mod_prison/prison.data

规则配置

配置描述

规则配置文件: conf/mod_prison/prison.data

配置项描述
VersionString
配置文件版本
ConfigObject
各产品线的prison规则列表
Config{k}String
产品线名称
Config{v}Array
prison规则列表
Config{v}[]Object
单条prison规则
Config{v}[].CondString
规则条件, 语法详见Condition
Config{v}[].AccessSignConfObject
计算请求签名的配置,其中签名被用来确定是否为同类请求
Config{v}[].AccessSignConf.UseSocketIPBoolean
计算请求签名时是否使用SocketIP
Config{v}[].AccessSignConf.UseClientIPBoolean
计算请求签名时是否使用ClientIP
Config{v}[].AccessSignConf.UseConnectIDBoolean
计算请求签名时是否使用ConnectID
Config{v}[].AccessSignConf.UseUrlBoolean
计算请求签名时是否使用请求的Url
Config{v}[].AccessSignConf.UseHostBoolean
计算请求签名时是否使用host
Config{v}[].AccessSignConf.UsePathBoolean
计算请求签名时是否使用请求Path
Config{v}[].AccessSignConf.UseHeadersBoolean
计算请求签名时是否使用header
Config{v}[].AccessSignConf.UrlRegexpString
计算请求签名时使用URL中匹配了UrlRegexp的子串
Config{v}[].AccessSignConf.[]QeuryArray
计算请求签名时使用的query key
Config{v}[].AccessSignConf.[]HeaderArray
计算请求签名时使用的header key
Config{v}[].AccessSignConf.[]CookieArray
计算请求签名时使用的cookie key
Config{v}[].ActionObject
规则动作
Config{v}[].Action.CmdString
规则动作名称
Config{v}[].Action.ParamsArray
规则动作参数列表
Config{v}[].CheckPeriodInteger
检测周期(秒)
Config{v}[].StayPeriodInteger
命中规则后的封禁时长 : 惩罚时长(秒)
Config{v}[].ThresholdInteger
限流阈值
Config{v}[].AccessDictSizeInteger
访问统计表大小
Config{v}[].PrisonDictSizeInteger
访问封禁表大小

模块动作

动作描述
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. }