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