Orange是基于插件设计的,基本思想是通过实现各种插件灵活的在Nginx/OpenResty的各个执行阶段进行逻辑处理。
Orange提供的默认插件功能如下:
其它插件,用户可根据具体需要按规范编写即可。
以下使用案例对于成体系、各职责/配置比较健全的团队来说可能并不存在,但仍可能具有一些参考意义。
想象下面的场景:
/user
开头的请求rewrite到以/some_host/user
开头,如果是在Nginx里写,一般要通过if
判断Host,再rewrite,可能需要多次调试和reload才能成功。这对于有经验的运维或是开发可能并不是难事,但对刚接手的新人或是不熟悉Nginx的运维人员来说,就是一件头疼事儿了if/else
,或者给同一个职责的API取不同的名字(其它更好的实践暂且不表)。长此以往,API的版本管理可能就是一团乱麻这时,通过Orange的rewrite/redirect插件就能很方便的解决这个问题,并且实时生效无需重启或是reload:
在内部系统中,大量模块或者异构的子系统之间都是通过HTTP交互的,这时不可避免的要引入一个七层负载,选型最多的基本上也就是Nginx了。对于内部网关的管理,可能存在的问题:
Orange提供的WAF插件可以解决这个问题:
此外, Orange还提供了HTTP Basic Authorization和Key Authorization来对API进行动态鉴权
应用的AB测试或者流量切分,虽然业界已经有很多方案可供参考,各个公司或团队也有相应实现,Orange给出了另一种动态解决方案