expression.md
category: Concept
redirect_from:
- /docs/v0.4.0/concept/expression/
- /docs/latest/concept/expression/
title: “匹配符、表达式设计”
sort_title: “7”
Orange各模块使用的一些匹配项、匹配符和表达式概念。
匹配项
URI
IP
Header K/V
Query K/V
Host
Referer
PostParams K/V
UserAgent
Method
匹配符
=
!=
match
not_match
>
>=
<
<=
表达式
单一条件表达式
全真表达式
至少一个为真表达式
复杂表达式
extractor.md
category: Concept
redirect_from:
- /docs/v0.4.0/concept/extractor/
- /docs/latest/concept/extractor/
title: “变量提取模块”
sort_title: “3”
变量提取模块,是一系列变量提取器的集合,一般格式如下:
"extractor": {
"type": 1,//提取器类型,1指索引式提取,2指模板式提取
"extractions": [
{//一个提取器
"type": "Query",
"name": "wd"
},
{
"type": "Header",
...
handle.md
category: Concept
redirect_from:
- /docs/v0.4.0/concept/handle/
- /docs/latest/concept/handle/
title: “后续处理模块”
sort_title: “4”
后续处理模块,它包含了一些后续处理需要的配置、参数等信息,比如是否需要记录日志、响应状态码、要跳转到的URL、要代理的下游upstream server等等。详细请参看各个插件的配置。
extraction.md
category: Concept
redirect_from:
- /docs/v0.4.0/concept/extraction/
- /docs/latest/concept/extraction/
title: “变量提取器”
sort_title: “6”
每个提取器的格式如下:
{
"type": "",
"name": ""
},
实例:
{
"type": "Query",
"name": "username"
},
{
"type": "Header",
"name": "id"
}
以下针对每个条件的格式作解释:
type即要提取的数据来源,目前包括以下几种:
Header K/V
Query K/V
Po ...
judge.md
category: Concept
redirect_from:
- /docs/v0.4.0/concept/judge/
- /docs/latest/concept/judge/
title: “条件判断模块”
sort_title: “2”
条件判断模块,是一系列匹配条件和使用方式的集合。它由以下几部分组成
type: 0表示只有一个匹配条件,1表示对所有条件与操作,2表示对所有条件或操作,3表示按照另一个字段expression对所有条件求值
expression: 当type为3时,此字段不为空,它的格式是一个lua的逻辑判断表达式。表达式中每个值的格式为v[index], 比如v[1]对应的就是第一个条件的值。示例:(v[1] or v[2]) and v[3],即前两个条件至少一个为真并且第三个条件为真时,规则为真。
conditions: 匹配条件集合
waf.md
category: API
redirect_from:
- /docs/latest/api/waf/
title: “WAF防火墙”
sort_title: “9”
flag: “2”
1) 开启或关闭此插件
请求
URI
Method
/waf/enable
Post
参数
名称
类型
说明
enable
int
0关闭1开启
返回结果
{
"msg":"关闭成功",
"success":true
}
2) 获取所有配置信息
请求
URI
Method
/waf/configs
Get
参数
无
返回结果
{
"data": {
"enable": true,
"rules": [
{
"enable": true, ...
rule.md
category: Concept
redirect_from:
- /docs/v0.4.0/concept/rule/
- /docs/latest/concept/rule/
title: “规则”
sort_title: “1”
** 规则 ** 是Orange中的一个概念,它可能包括一个条件判断模块、一个变量提取模块和一个后续处理模块。一般情况下,插件的一条规则会包含条件判断模块和一个处理模块,根据需要选择是否使用变量提取模块,如分流插件就需要变量提取模块,但防火墙插件则不需要。
下面通过一个具体的实例看一下它的组成。
格式
以重定向插件的一条规则的结构为例,介绍如下(以json格式描述):
{
"enable": true,
"name": "用户访问重定向",
"id": "F7F73D94-AEEB-4B61-9E59-AEDBF200B941",
"time": "2016-05-04 16: ...
api_server.md
category: Advanced
redirect_from:
- /docs/latest/advanced/api_server/
title: “如何使用Open API”
sort_title: “2”
Orange提供了各种API用于实现第三方需求, 如:
根据API实现个性化的Dashboard
通过API获取监控信息
运维上的一些需求
通过API增删改各种插件配置
默认的API Server在7777端口监听,详细使用方法参看[API](/docs/api/)部分。
about.md
category: Guides
redirect_from:
- /docs/v0.4.0/guides/about/
- /docs/latest/guides/about/
title: “关于Orange”
sort_title: “1”
欢迎使用Orange,使用过程中如碰到问题,请到Github进行提问。
关于
Orange是一个基于OpenResty的API Gateway,提供API及自定义规则的监控和管理,如访问统计、流量切分、API重定向、API鉴权、WEB防火墙等功能。它有以下特性:
通过MySQL存储来简单支持集群部署
支持多种条件匹配和变量提取
支持通过自定义插件方式扩展功能
默认内置的插件
全局状态统计
自定义监控
URL重写
URI重定向
访问速度控制Rate Limiting
HTTP Basic Auth
HTTP Key Auth
简单防火墙WAF
代理、ABTesting、分流
提供管理界面用于管理内置插件
开放API: 灵活配置插件、查看运行状态、统计数据等
API
内置插件以HTTP Restful形式开 ...
build_plugin.md
category: Advanced
redirect_from:
- /docs/latest/advanced/build_plugin/
title: “创建自定义插件”
sort_title: “3”
to be continued…