Skip to content
YangNan.Shi edited this page Dec 16, 2016 · 1 revision

ngx_http_dyabt_module

可以动态修改分配规则的Nginx灰度发布模块,完全使用C语言实现,提供Restful风格的API,几乎不影响Nginx性能。

指令参考

dyabt_interface
配置于location块内,作为一个Handler提供Restful API同时也是该模块的开关指令。

dyabt_set <var> <domain>
配置于location块内,使用domain对应的规则解析当前请求并将结果存到var变量内。

Nginx 配置参考

events {
}
http {
    server {
        listen 4000;
        location / {
			dyabt_set $ab $host;
            return 200 $ab.$host;
        }
    }
    server {
        listen 4032;
        location / {
			dyabt_interface;
        }
    }
}

Restful API参考

POST /testings
xausky.example.org,header_x_uid
0,10
11,100
101,99999999

200 OK
success

提交一个规则到规则列表,以xausky.example.org为域,如果有相同域的规则将会覆盖规则,以header_x_uid为解析器,目前解析器只有header_x_uid将解析出HTTP Headers内的X-UID对应的值。 下面三行为三个Case,Case描述一个最大最小范围,使用dyabt_set指令时模块将顺序进行匹配,返回从1开始的成功索引,如果全部失败或者没有对应域将返回0。

GET /testings[/<domain>]
200 OK
init.example.org,header_x_uid
0,10
11,100
101,99999999
---
xausky.example.org,header_x_uid
0,10
11,100
101,99999999
---
<...>

查询规则列表,将返回domain为域的规则列表,若没有domain段将返回所有规则这时以---行分割规则,


DELETE /testings/<domain>
200 OK
success

删除domain对应的规则,dyabt_set指令对于不存在的域将返回0。

Clone this wiki locally