-
Notifications
You must be signed in to change notification settings - Fork 419
5 app_Mod
star edited this page Apr 24, 2018
·
4 revisions
app_Mod 自定义规则(组)模块
(对应配置文件:conf_json/app_Mod.json)
该模块在访问控制的第五步,是自定义高级规则控制
[
{
"state": "on",
# 该条规则开关 (on/off)
"action": ["deny"],
# 执行动作:拒绝
"hostname": ["101.200.122.200",""],
# hostname 匹配条件,第一个参数:host名称,第二个:匹配方式
"uri": ["^/([\\w]{4}\\.html|deny\\.do|你好\\.html)$","jio"]
# uri 匹配条件
},
{
"state": "on",
"action": ["rehtml"],
# 执行动作:返回自定义html
"rehtml": "<html>hi~!</html>",
# 自定义内容
"hostname": ["101.200.122.200",""],
"uri": ["/rehtml",""]
},
{
"state": "on",
"action": ["refile"],
# 执行动作:返回自定义文件
"refile": "2.txt",
# 自定义文件名称
"hostname": ["101.200.122.200",""],
"uri": ["/refile",""]
},
{
"state": "on",
"action": ["deny"],
"hostname": [["101.200.122.200","127.0.0.1"],"list"],
# 匹配hostname规则,第一个参数:匹配host名称,第二个参数:匹配类型
"uri": ["/api/.*","jio"],
"app_ext":[
["ip",[["106.37.236.170","1.1.1.1"],"list",true]]
# 第一个参数:匹配位置,第二个参数:匹配规则
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:是否取反
]
},
{
"state": "on",
"action": ["relua"],
# 执行动作:自定义lua文件脚本
"relua":"1.lua",
# 自定义lua文件脚本文件 名称
"hostname": ["127.0.0.1:5460",""],
"uri": ["/relua",""]
},
{
"state": "on",
"action": ["relua_str"],
# 执行动作:自定义luastr代码
"relua_str":"local a = 1 if a<1 then ngx.say(1) end return 2",
# 自定义luastr代码
"hostname": ["127.0.0.1:5460",""],
"uri": ["/relua",""]
},
{
"state": "on",
"action": ["log"],
# 执行动作:log记录
"hostname": ["127.0.0.1:5460",""],
"uri": ["/log",""]
},
{
"state": "on",
"action": ["deny"],
"hostname": [["101.200.122.200","127.0.0.1"],"list"],
"uri": ["/api/.*","jio"],
"app_ext":[
# 自定义规则组
["uri",["admin","in"],"or"],
# 规则组第一个规则
# 第一个参数:匹配位置,第二个参数:匹配规则,第三个:规则连接符(and/or 默认:and)
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式
["cookie",["c_test","jio"],"and"],
["ip",[["1.1.1.1","127.0.0.1"],"list",true],"and"]
# 规则组第三条规则
# 第一个参数:匹配位置,第二个参数:匹配规则,第三个:规则连接符
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:是否取反
]
},
{
"state": "on",
"action": ["refile"],
# 执行动作:自定义返回文件
"refile": ["js_debug.txt","text/html"],
# 第一个参数:返回文件名称,第二个:header头类型
"hostname": ["localhost5460",""],
"uri": ["/api/test/debug",""],
"app_ext":[
["args",["true","@token@",["cctoken"],true]]
# 第一个参数:匹配位置,第二个:匹配规则
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:匹配名称和位置,第四个:是否取反
]
},
{
"state": "on",
"action": ["refile"],
"refile": ["js_time.txt","text/html"],
"hostname": ["localhost5460",""],
"uri": ["/api/test/time",""],
"app_ext":[
["args",["^[\\w]{6}$","jio",["cc",3],true]]
# 第一个参数:匹配位置,第二个:匹配规则
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:匹配名称和位置,第四个:是否取反
]
},
{
"state": "on",
"action": ["deny"],
"post_form":1024,
"hostname": ["localhost5460",""],
"uri": ["/api/test/debug",""],
"app_ext":[
["post_form",["\\.(jpg|jpeg|png|webp|gif)$","jio",["image0",2],true],"or"],
# 第一个参数:匹配位置,第二个:匹配规则
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:匹配名称和位置,第四个:是否取反
["post_form",["(;|-|/)","jio",["image0",2],false],"or"]
# 第一个参数:匹配位置,第二个:匹配规则
# 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:匹配名称和位置,第四个:是否取反
]
}
]