context_filter
> 文档中心 > 文档中心 > INFINI Gateway > 功能手册 > 在线过滤器 > context_filter

context_filter #

描述 #

context_filter 过滤器用来按请求上下文来过滤流量。

配置示例 #

一个简单的示例如下:

flow:
  - name: test
    filter:
      - context_filter:
          context: _ctx.request.path
          message: "request not allowed."
          status: 403
          must: #must match all rules to continue
            prefix:
              - /medcl
            contain:
              - _search
            suffix:
              - _search
            wildcard:
              - /*/_search
            regex:
              - ^/m[\w]+dcl
          must_not: # any match will be filtered
            prefix:
              - /.kibana
              - /_security
              - /_security
              - /gateway_requests*
              - /.reporting
              - /_monitoring/bulk
            contain:
              - _refresh
            suffix:
              - _count
              - _refresh
            wildcard:
              - /*/_refresh
            regex:
              - ^/\.m[\w]+dcl
          should:
            prefix:
              - /medcl
            contain:
              - _search
              - _async_search
            suffix:
              - _refresh
            wildcard:
              - /*/_refresh
            regex:
              - ^/m[\w]+dcl

参数说明 #

名称类型说明
contextstring上下文变量
excludearray拒绝通过的请求的变量列表
includearray允许通过的请求的变量列表
must.*object必须都满足所设置条件的情况下才能允许通过
must_not.*object必须都不满足所设置条件的情况下才能通过
should.*object满足任意所设置条件的情况下即可通过
*.prefixarray判断是否由特定字符开头
*.suffixarray判断是否由特定字符结尾
*.containarray判断是否包含特定字符
*.wildcardarray判断是否符合通配符匹配规则
*.regexarray判断是否符合正则表达式匹配规则
actionstring符合过滤条件之后的处理动作,可以是 denyredirect_flow,默认为 deny
statusint自定义模式匹配之后返回的状态码
messagestring自定义 deny 模式返回的消息文本
flowstring自定义 redirect_flow 模式执行的 flow ID

Note: 当仅设置了 should 条件的情况下,必须至少满足 should 设置的其中一种才能被允许通过。