1 Star 4 Fork 2

githubsync / orange

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Orange

GitHub release license

中文 | English | Website

Orange是一个基于OpenResty的API网关。除Nginx的基本功能外,它还可用于API监控、访问控制(鉴权、WAF)、流量筛选、访问限速、AB测试、动态分流等。它有以下特性:

  • 提供了一套默认的Dashboard用于动态管理各种功能和配置
  • 提供了API接口用于实现第三方服务(如个性化运维需求、第三方Dashboard等)
  • 可根据规范编写自定义插件扩展Orange功能

使用

安装依赖

  • OpenResty: 版本应在1.9.7.3+
    • Orange的监控插件需要统计http的某些状态数据,所以需要编译OpenResty时添加--with-http_stub_status_module
    • 由于使用了*_block指令,所以OpenResty的版本最好在1.9.7.3以上.
  • lor框架
    • 若使用的Orange版本低于v0.6.2则应安装lor v0.2.*版本
    • 若使用的Orange版本高于或等于v0.6.2则应安装lor v0.3.0+版本
  • MySQL
    • 配置存储和集群扩展需要MySQL支持。从0.2.0版本开始,Orange去除了本地文件存储的方式,目前仅提供MySQL存储支持.

数据表导入MySQL

  • 在MySQL中创建数据库,名为orange
  • 将与当前代码版本配套的SQL脚本(如install/orange-v0.6.4.sql)导入到orange库中

修改配置文件

Orange有两个配置文件,一个是conf/orange.conf,用于配置插件、存储方式和内部集成的默认Dashboard,另一个是conf/nginx.conf用于配置Nginx(OpenResty).

orange.conf的配置如下,请按需修改:

{
    "plugins": [ //可用的插件列表,若不需要可从中删除,系统将自动加载这些插件的开放API并在7777端口暴露
        "stat",
        "monitor",
        "redirect",
        "rewrite",
        "rate_limiting",
        "property_rate_limiting",
        "basic_auth",
        "key_auth",
        "signature_auth",
        "waf",
        "divide",
        "kvstore"
    ],

    "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
        },
        "desc": "mysql configuration"
    },

    "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

安装

如果使用的是v0.5.0以前的版本则无需安装, 只要将Orange下载下来放到合适的位置即可。

如果使用的是v0.5.0及以上的版本, 可以通过make install将Orange安装到系统中。 执行此命令后, 以下两部分将被安装:

/usr/local/orange     #orange运行时需要的文件
/usr/local/bin/orange #orange命令行工具

启动

在v0.5.0以下版本中, 一个简单的shell脚本用来启动/重启orange, 执行sh start.sh即可。可以按需要仿照start.sh编写运维脚本, 本质上就是启动/关闭Nginx。

除此之外, 从v0.5.0开始, 如果执行过make install将Orange安装到系统后, 还可以通过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里对应的配置

文档

Docker

https://store.docker.com/community/images/syhily/orange@syhily维护.

贡献者

See also

Orange的插件设计参考自Kong.

License

MIT

The MIT License (MIT) Copyright (c) 2016 - 2017 sumory.wu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

orange openrestry 网关 展开 收起
Lua
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Lua
1
https://gitee.com/githubsync/orange.git
git@gitee.com:githubsync/orange.git
githubsync
orange
orange
master

搜索帮助