Orange是一個基於OpenResty的API Gateway,提供API及自定義規則的監控和管理,如訪問統計、流量切分、API重定向、WEB防火牆等功能。它有如下特性:mysql
配置項支持文件存儲和MySQL存儲(0.2.0版本開始將去除文件支持)linux
經過MySQL存儲來簡單支持集羣部署nginx
支持多種條件匹配和變量提取git
支持經過自定義插件方式擴展功能github
默認內置六個插件sql
全局狀態統計數據庫
自定義監控centos
URL重寫restful
URI重定向ide
簡單防火牆
代理、ABTesting、分流
提供管理界面用於管理內置插件
以restful形式徹底開放API
Github: https://github.com/sumory/orange
安裝OpenResty1.9.7.3+
安裝lor,Orange要求的lor最低版本爲0.1.0
Orange使用的uuid生成器,依賴libuuid.so, centos可經過如下命令安裝,其餘linux發行版請自行google
yum install libuuid-devel
安裝Orange
git clone https://github.com/sumory/orange cd orange #查看並根據須要修改`orange.conf` { "plugins": [//默認的可用插件,若不須要刪除便可 "stat", "monitor", "redirect", "rewrite", "waf", "divide" ], "store": "mysql", //存儲方式:`mysql` "store_mysql": { //使用`mysql`存儲時的配置,須要導入install/${對應版本}.sql到數據庫中 "timeout": 5000, "connect_config": { "host": "127.0.0.1", "port": 3306, "database": "orange", "user": "root", "password": "", "max_packet_size": 1048576 }, "pool_config": { "max_idle_timeout": 10000, "pool_size": 3 }, "desc":"mysql configuration" } } #修改conf/nginx.conf裏的一些配置,如 # `resolver`,用於DNS解析 # 各日誌目錄等 # 各lua_shared_dict的大小 # 端口爲9999的`server`, 這個server用於Orange的管理,請確保對該端口的訪問受權,如只支持內網訪問 #修改好orange.conf和conf/nginx.conf後,啓動便可 sh start.sh
現實中因爲用戶的業務系統多種多樣,對於複雜應用,Orange並非一個開箱即用的組件,須要調整一些配置才能集成到現有系統中。
Orange提供的的配置文件和示例都是最簡配置,用戶使用時請根據具體項目或業務須要自行調整,這些調整可能包括但不限於:
使用的各個shared dict的大小, 如ngx.shared.status
nginx.conf配置文件中各個server、location的配置及其權限控制,好比orange dashboard的server應該只對內部有權限的機器開放訪問
根據不一樣業務而設置的不一樣nginx配置,如timeout、keepalive、gzip、log、connections等等
Orange0.2.0版本即將發佈,API已經所有開放,用戶可經過默認的Dashboard管理,也可經過Restful的API進行操做。第三方SPA版的Dashboard已在開發中,屆時會伴隨0.2.0一塊兒發佈。