Orange是一个基于OpenResty的API网关。除Nginx的基本功能外,它还可用于API监控、访问控制(鉴权、WAF)、流量筛选、访问限速、AB测试、静/动态分流等。它有以下特性:
- 提供了一套默认的Dashboard用于动态管理各种功能和配置
- 提供了API接口用于实现第三方服务(如个性化运维需求、第三方Dashboard等)
- 可根据规范编写自定义插件扩展Orange功能
- OpenResty: 版本应在1.11.2+
- Orange的监控插件需要统计HTTP的状态数据,所以编译OpenResty时需要添加
--with-http_stub_status_module
- Orange的监控插件需要统计HTTP的状态数据,所以编译OpenResty时需要添加
- Lor框架
- 若使用的Orange版本低于v0.6.2则应安装lor v0.2.*版本
- 若使用的Orange版本高于或等于v0.6.2则应安装lor v0.3.0+版本
- MySQL
- 配置存储和集群扩展需要MySQL支持
- 使用luarocks安装一些第三方库
- luarocks install https://luarocks.org/manifests/steved/penlight-1.5.4-1.rockspec
- luarocks install https://luarocks.org/manifests/kong/lua-resty-dns-client-2.2.0-1.rockspec
- luarocks install https://luarocks.org/lua-resty-http-0.13-0.src.rock
- luarocks install https://luarocks.org/manifests/luarocks/luasocket-3.0rc1-2.rockspec
- 在MySQL中创建数据库,名为orange
- 将与当前代码版本配套的SQL脚本(如install/orange-v0.7.0.sql)导入到orange库中
Orange有两个配置文件,一个是conf/orange.conf,用于配置插件、存储方式和内部集成的默认Dashboard,另一个是conf/nginx.conf用于配置Nginx.
orange.conf的配置如下,请按需修改:
{
"plugins": [ //可用的插件列表,若不需要可从中删除,系统将自动加载这些插件的开放API并在7777端口暴露
"stat",
"monitor",
".."
],
"store": "mysql",//目前仅支持mysql存储
"store_mysql": { //MySQL配置
"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
}
},
"dashboard": {//默认的Dashboard配置.
"auth": false, //设为true,则需用户名、密码才能登录Dashboard,默认的用户名和密码为admin/orange_admin
"session_secret": "y0ji4pdj61aaf3f11c2e65cd2263d3e7e5", //加密cookie用的盐,自行修改即可
"whitelist": [//不需要鉴权的uri,如登录页面,无需修改此值
"^/auth/login$",
"^/error/$"
]
},
"api": {//API server配置
"auth_enable": true,//访问API时是否需要授权
"credentials": [//HTTP Basic Auth配置,仅在开启auth_enable时有效,自行添加或修改即可
{
"username":"api_username",
"password":"api_password"
}
]
}
}conf/nginx.conf里是一些nginx相关配置,请自行检查并按照实际需要更改或添加配置,特别注意以下几个配置:
- lua_package_path:需要根据本地环境配置适当修改,如lor框架的安装路径
- resolver:DNS解析
- 各个server或是location的权限,如是否需要通过
allow/deny指定配置黑白名单ip
- 依赖安装
可以通过make dependencies将Orange依赖的扩展库安装到系统中。
- 脚本管理工具
无需安装, 只要将Orange下载下来, 根据需要修改一下orange.conf和nginx.conf配置,然后使用start.sh脚本即可启动。
默认提供的nginx.conf和start.sh都是最简单的配置,只是给用户一个默认的配置参考,用户应该根据实际生产要求自行添加或更改其中的配置以满足需要。
- 命令行管理工具
可以通过make install将Orange安装到系统中(默认安装到/usr/local/orange)。 执行此命令后, 以下两部分将被安装:
# /usr/local/orange // orange运行时需要的文件
# /usr/local/bin/orange // orange命令行工具若采用方式一安装,则执行sh start.sh即可启动。可以按需要仿照start.sh编写运维脚本, 本质上就是启动/关闭Nginx。
若采用方式二make install安装,则可以通过命令行工具orange来管理, 执行orange help查看有哪些命令可以使用:
Usage: orange COMMAND [OPTIONS]
The commands are:
start Start the Orange Gateway
stop Stop current Orange
reload Reload the config of Orange
restart Restart Orange
store Init/Update/Backup Orange store
version Show the version of Orange
help Show help tips
Orange启动成功后, dashboard和API server也随之启动:
- 内置的Dashboard可通过
http://localhost:9999访问 - API Server默认在
7777端口监听,如不需要API Server可删除nginx.conf里对应的配置
https://store.docker.com/community/images/syhily/orange 由@syhily维护.
- @syhily
- @lhmwzy
- @spacewander
- @noname007
- @itchenyi
- @Near-Zhang
- @khlipeng
- @wujunze
- @shuaijinchao
- @EasonFeng5870
- @zhjwpku
Orange的插件设计参考自Kong.
MIT License