Skip to content

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"] # 第一个参数:匹配位置,第二个:匹配规则 # 匹配规则:第一个参数:匹配内容,第二个:匹配方式,第三个:匹配名称和位置,第四个:是否取反 ] } ] 

Clone this wiki locally