docs: modify the docs directory (#3661)
30
CHANGELOG.md
@ -397,9 +397,9 @@ an advanced debugging mode that is more developer friendly, and a new URI redire
|
||||
|
||||
### Plugins
|
||||
|
||||
- [Redirect URI](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/redirect.md): Redirect URI plugin. [#732](https://github.com/apache/incubator-apisix/pull/732)
|
||||
- [Proxy Rewrite](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/proxy-rewrite.md): Supported remove `header` feature. [#658](https://github.com/apache/incubator-apisix/pull/658)
|
||||
- [Limit Count](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/limit-count.md): Supported global limit count with `Redis Server`.[#624](https://github.com/apache/incubator-apisix/pull/624)
|
||||
- [Redirect URI](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/redirect.md): Redirect URI plugin. [#732](https://github.com/apache/incubator-apisix/pull/732)
|
||||
- [Proxy Rewrite](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/proxy-rewrite.md): Supported remove `header` feature. [#658](https://github.com/apache/incubator-apisix/pull/658)
|
||||
- [Limit Count](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/limit-count.md): Supported global limit count with `Redis Server`.[#624](https://github.com/apache/incubator-apisix/pull/624)
|
||||
|
||||
### lua-resty-*
|
||||
|
||||
@ -431,16 +431,16 @@ and support for ARM platform, and proxy rewrite plugin.
|
||||
|
||||
### Core
|
||||
|
||||
- :sunrise: **[support stand-alone mode](https://github.com/apache/incubator-apisix/blob/master/doc/stand-alone-cn.md)**: using yaml to update configurations of APISIX, more friendly to kubernetes. [#464](https://github.com/apache/incubator-apisix/pull/464)
|
||||
- :sunrise: **[support stream proxy](https://github.com/apache/incubator-apisix/blob/master/doc/stream-proxy.md)**. [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- :sunrise: **[support stand-alone mode](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/stand-alone-cn.md)**: using yaml to update configurations of APISIX, more friendly to kubernetes. [#464](https://github.com/apache/incubator-apisix/pull/464)
|
||||
- :sunrise: **[support stream proxy](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/stream-proxy.md)**. [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- :sunrise: support consumer bind plugins. [#544](https://github.com/apache/incubator-apisix/pull/544)
|
||||
- support domain name in upstream, not only IP. [#522](https://github.com/apache/incubator-apisix/pull/522)
|
||||
- ignored upstream node when it's weight is 0. [#536](https://github.com/apache/incubator-apisix/pull/536)
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[MQTT Proxy](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/mqtt-proxy.md)**: support to load balance MQTT by `client_id`, both support MQTT 3.1 and 5.0. [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- [proxy-rewrite](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/proxy-rewrite.md): rewrite uri,
|
||||
- :sunrise: **[MQTT Proxy](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/mqtt-proxy.md)**: support to load balance MQTT by `client_id`, both support MQTT 3.1 and 5.0. [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- [proxy-rewrite](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/proxy-rewrite.md): rewrite uri,
|
||||
schema, host for upstream. [#594](https://github.com/apache/incubator-apisix/pull/594)
|
||||
|
||||
### ARM
|
||||
@ -473,18 +473,18 @@ This release brings many new features, such as IP black and white list, gPRC pro
|
||||
|
||||
### Core
|
||||
|
||||
- :sunrise: **[gRPC transcoding](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/grpc-transcoding.md)**: supports protocol transcoding so that clients can access your gRPC API by using HTTP/JSON. [#395](https://github.com/apache/incubator-apisix/issues/395)
|
||||
- :sunrise: **[radix tree router](https://github.com/apache/incubator-apisix/blob/master/doc/router-radixtree.md)**: The radix tree is used as the default router implementation. It supports the uri, host, cookie, request header, request parameters, Nginx built-in variables, etc. as the routing conditions, and supports common operators such as equal, greater than, less than, etc., more powerful and flexible.**IMPORTANT: This change is not downward compatible. All users who use historical versions need to manually modify their routing to work properly.** [#414](https://github.com/apache/incubator-apisix/issues/414)
|
||||
- :sunrise: **[gRPC transcoding](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/grpc-transcoding.md)**: supports protocol transcoding so that clients can access your gRPC API by using HTTP/JSON. [#395](https://github.com/apache/incubator-apisix/issues/395)
|
||||
- :sunrise: **[radix tree router](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/router-radixtree.md)**: The radix tree is used as the default router implementation. It supports the uri, host, cookie, request header, request parameters, Nginx built-in variables, etc. as the routing conditions, and supports common operators such as equal, greater than, less than, etc., more powerful and flexible.**IMPORTANT: This change is not downward compatible. All users who use historical versions need to manually modify their routing to work properly.** [#414](https://github.com/apache/incubator-apisix/issues/414)
|
||||
- Dynamic upstream supports more parameters, you can specify the upstream uri and host, and whether to enable websocket. [#451](https://github.com/apache/incubator-apisix/pull/451)
|
||||
- Support for get values from cookies directly from `ctx.var`. [#449](https://github.com/apache/incubator-apisix/pull/449)
|
||||
- Routing support IPv6. [#331](https://github.com/apache/incubator-apisix/issues/331)
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[serverless](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/serverless.md)**: With serverless support, users can dynamically run any Lua function on a gateway node. Users can also use this feature as a lightweight plugin.[#86](https://github.com/apache/incubator-apisix/pull/86)
|
||||
- :sunrise: **[serverless](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/serverless.md)**: With serverless support, users can dynamically run any Lua function on a gateway node. Users can also use this feature as a lightweight plugin.[#86](https://github.com/apache/incubator-apisix/pull/86)
|
||||
- :sunrise: **support IdP**: Support external authentication services, such as Auth0, okta, etc., users can use this to connect to Oauth2.0 and other authentication methods. [#447](https://github.com/apache/incubator-apisix/pull/447)
|
||||
- [rate limit](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/limit-conn.md): Support for more restricted keys, such as `X-Forwarded-For` and `X-Real-IP`, and allows users to use Nginx variables, request headers, and request parameters as keys. [#228](https://github.com/apache/incubator-apisix/issues/228)
|
||||
- [IP black and white list](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/ip-restriction.md) Support IP black and white list for security. [#398](https://github.com/apache/incubator-apisix/pull/398)
|
||||
- [rate limit](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/limit-conn.md): Support for more restricted keys, such as `X-Forwarded-For` and `X-Real-IP`, and allows users to use Nginx variables, request headers, and request parameters as keys. [#228](https://github.com/apache/incubator-apisix/issues/228)
|
||||
- [IP black and white list](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/ip-restriction.md) Support IP black and white list for security. [#398](https://github.com/apache/incubator-apisix/pull/398)
|
||||
|
||||
### CLI
|
||||
|
||||
@ -508,7 +508,7 @@ This release brings many new features such as health check and circuit breaker,
|
||||
|
||||
### Core
|
||||
|
||||
- :sunrise: **[Health Check and Circuit Breaker](https://github.com/apache/incubator-apisix/blob/master/doc/health-check.md)**: Enable health check on the upstream node, and will automatically filter unhealthy nodes during load balancing to ensure system stability. [#249](https://github.com/apache/incubator-apisix/pull/249)
|
||||
- :sunrise: **[Health Check and Circuit Breaker](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/health-check.md)**: Enable health check on the upstream node, and will automatically filter unhealthy nodes during load balancing to ensure system stability. [#249](https://github.com/apache/incubator-apisix/pull/249)
|
||||
- Anti-ReDoS(Regular expression Denial of Service). [#252](https://github.com/apache/incubator-apisix/pull/250)
|
||||
- supported debug mode. [#319](https://github.com/apache/incubator-apisix/pull/319)
|
||||
- allowed to use different router. [#364](https://github.com/apache/incubator-apisix/pull/364)
|
||||
@ -518,8 +518,8 @@ This release brings many new features such as health check and circuit breaker,
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[OpenTracing](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/zipkin.md)**: support Zipkin and Apache SkyWalking. [#304](https://github.com/apache/incubator-apisix/pull/304)
|
||||
- [JWT auth](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/jwt-auth-cn.md). [#303](https://github.com/apache/incubator-apisix/pull/303)
|
||||
- :sunrise: **[OpenTracing](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/zipkin.md)**: support Zipkin and Apache SkyWalking. [#304](https://github.com/apache/incubator-apisix/pull/304)
|
||||
- [JWT auth](https://github.com/apache/incubator-apisix/blob/master/docs/en/latest/plugins/jwt-auth-cn.md). [#303](https://github.com/apache/incubator-apisix/pull/303)
|
||||
|
||||
### CLI
|
||||
|
||||
|
@ -395,9 +395,9 @@
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[Redirect URI](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/redirect.md)**: URI 重定向插件。 [#732](https://github.com/apache/incubator-apisix/pull/732)
|
||||
- [Proxy Rewrite](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/proxy-rewrite.md):支持 `header` 删除功能。 [#658](https://github.com/apache/incubator-apisix/pull/658)
|
||||
- [Limit Count](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/limit-count.md): 通过 `Redis Server` 聚合 `APISIX` 节点之间将共享流量限速结果,实现集群流量限速。[#624](https://github.com/apache/incubator-apisix/pull/624)
|
||||
- :sunrise: **[Redirect URI](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/redirect.md)**: URI 重定向插件。 [#732](https://github.com/apache/incubator-apisix/pull/732)
|
||||
- [Proxy Rewrite](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/proxy-rewrite.md):支持 `header` 删除功能。 [#658](https://github.com/apache/incubator-apisix/pull/658)
|
||||
- [Limit Count](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/limit-count.md): 通过 `Redis Server` 聚合 `APISIX` 节点之间将共享流量限速结果,实现集群流量限速。[#624](https://github.com/apache/incubator-apisix/pull/624)
|
||||
|
||||
### lua-resty-*
|
||||
|
||||
@ -428,16 +428,16 @@
|
||||
|
||||
### Core
|
||||
|
||||
- :sunrise: **[增加单机模式](https://github.com/apache/incubator-apisix/blob/master/doc/stand-alone-cn.md)**: 使用 yaml 配置文件来更新 APISIX 的配置,这对于 kubernetes 更加友好。 [#464](https://github.com/apache/incubator-apisix/pull/464)
|
||||
- :sunrise: **[支持 stream 代理](https://github.com/apache/incubator-apisix/blob/master/doc/stream-proxy-cn.md)**. [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- :sunrise: 支持[在 consumer 上绑定插件](https://github.com/apache/incubator-apisix/blob/master/doc/architecture-design-cn.md#consumer). [#544](https://github.com/apache/incubator-apisix/pull/544)
|
||||
- :sunrise: **[增加单机模式](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//stand-alone-cn.md)**: 使用 yaml 配置文件来更新 APISIX 的配置,这对于 kubernetes 更加友好。 [#464](https://github.com/apache/incubator-apisix/pull/464)
|
||||
- :sunrise: **[支持 stream 代理](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//stream-proxy-cn.md)**. [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- :sunrise: 支持[在 consumer 上绑定插件](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//architecture-design-cn.md#consumer). [#544](https://github.com/apache/incubator-apisix/pull/544)
|
||||
- 上游增加对域名的支持,而不仅是 IP。[#522](https://github.com/apache/incubator-apisix/pull/522)
|
||||
- 当上游节点的权重为 0 时自动忽略。[#536](https://github.com/apache/incubator-apisix/pull/536)
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[MQTT 代理](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/mqtt-proxy-cn.md)**: 支持用 `client_id` 对 MQTT 进行负载均衡,同时支持 MQTT 3.1 和 5.0 两个协议标准。 [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- [proxy-rewrite](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/proxy-rewrite.md): 对代理到上游的请求进行改写,包括 host, uri 和 schema。 [#594](https://github.com/apache/incubator-apisix/pull/594)
|
||||
- :sunrise: **[MQTT 代理](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/mqtt-proxy-cn.md)**: 支持用 `client_id` 对 MQTT 进行负载均衡,同时支持 MQTT 3.1 和 5.0 两个协议标准。 [#513](https://github.com/apache/incubator-apisix/pull/513)
|
||||
- [proxy-rewrite](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/proxy-rewrite.md): 对代理到上游的请求进行改写,包括 host, uri 和 schema。 [#594](https://github.com/apache/incubator-apisix/pull/594)
|
||||
|
||||
### ARM
|
||||
|
||||
@ -469,18 +469,18 @@
|
||||
|
||||
### Core
|
||||
|
||||
- :sunrise: **[gRPC 协议转换](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/grpc-transcoding-cn.md)**: 支持 gRPC 协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API. [#395](https://github.com/apache/incubator-apisix/issues/395)
|
||||
- :sunrise: **[radix tree 路由](https://github.com/apache/incubator-apisix/blob/master/doc/router-radixtree.md)**: 默认的路由器更改为 radix tree,支持把 uri、host、cookie、请求头、请求参数、Nginx 内置变量等作为路由的条件,并支持等于、大于、小于等常见操作符,更加强大和灵活. **需要注意的是,这个改动不向下兼容,所有使用历史版本的用户,需要手动修改路由才能正常使用**。[#414](https://github.com/apache/incubator-apisix/issues/414)
|
||||
- :sunrise: **[gRPC 协议转换](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/grpc-transcoding-cn.md)**: 支持 gRPC 协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API. [#395](https://github.com/apache/incubator-apisix/issues/395)
|
||||
- :sunrise: **[radix tree 路由](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//router-radixtree.md)**: 默认的路由器更改为 radix tree,支持把 uri、host、cookie、请求头、请求参数、Nginx 内置变量等作为路由的条件,并支持等于、大于、小于等常见操作符,更加强大和灵活. **需要注意的是,这个改动不向下兼容,所有使用历史版本的用户,需要手动修改路由才能正常使用**。[#414](https://github.com/apache/incubator-apisix/issues/414)
|
||||
- 动态上游支持更多的参数,可以指定上游的 uri 和 host,以及是否开启 websocket. [#451](https://github.com/apache/incubator-apisix/pull/451)
|
||||
- 支持从 `ctx.var` 中直接获取 cookie 中的值. [#449](https://github.com/apache/incubator-apisix/pull/449)
|
||||
- 路由支持 IPv6. [#331](https://github.com/apache/incubator-apisix/issues/331)
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[serverless](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/serverless-cn.md)**: 支持 serverless,用户可以把任意 Lua 函数动态的在网关节点上运行。用户也可以把这个功能当做是轻量级的插件来使用。[#86](https://github.com/apache/incubator-apisix/pull/86)
|
||||
- :sunrise: **[serverless](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/serverless-cn.md)**: 支持 serverless,用户可以把任意 Lua 函数动态的在网关节点上运行。用户也可以把这个功能当做是轻量级的插件来使用。[#86](https://github.com/apache/incubator-apisix/pull/86)
|
||||
- :sunrise: **IdP 支持**: 支持外部的身份认证服务,比如 Auth0,okta 等,用户可以借此来对接 Oauth2.0 等认证方式。 [#447](https://github.com/apache/incubator-apisix/pull/447)
|
||||
- [限流限速](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/limit-conn-cn.md)支持更多的限制 key,比如 X-Forwarded-For 和 X-Real-IP,并且允许用户把 Nginx 变量、请求头和请求参数作为 key. [#228](https://github.com/apache/incubator-apisix/issues/228)
|
||||
- [IP 黑白名单](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/ip-restriction.md) 支持 IP 黑白名单,提供更高的安全性。[#398](https://github.com/apache/incubator-apisix/pull/398)
|
||||
- [限流限速](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/limit-conn-cn.md)支持更多的限制 key,比如 X-Forwarded-For 和 X-Real-IP,并且允许用户把 Nginx 变量、请求头和请求参数作为 key. [#228](https://github.com/apache/incubator-apisix/issues/228)
|
||||
- [IP 黑白名单](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/ip-restriction.md) 支持 IP 黑白名单,提供更高的安全性。[#398](https://github.com/apache/incubator-apisix/pull/398)
|
||||
|
||||
### CLI
|
||||
|
||||
@ -505,7 +505,7 @@
|
||||
|
||||
### Core
|
||||
|
||||
- :sunrise: **[健康检查和服务熔断](https://github.com/apache/incubator-apisix/blob/master/doc/health-check.md)**: 对上游节点开启健康检查,智能判断服务状态进行熔断和连接. [#249](https://github.com/apache/incubator-apisix/pull/249)
|
||||
- :sunrise: **[健康检查和服务熔断](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//health-check.md)**: 对上游节点开启健康检查,智能判断服务状态进行熔断和连接. [#249](https://github.com/apache/incubator-apisix/pull/249)
|
||||
- 阻止ReDoS(Regular expression Denial of Service). [#252](https://github.com/apache/incubator-apisix/pull/250)
|
||||
- 支持 debug 模式. [#319](https://github.com/apache/incubator-apisix/pull/319)
|
||||
- 允许自定义路由. [#364](https://github.com/apache/incubator-apisix/pull/364)
|
||||
@ -515,8 +515,8 @@
|
||||
|
||||
### Plugins
|
||||
|
||||
- :sunrise: **[分布式追踪 OpenTracing](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/zipkin.md)**: 支持 Zipkin 和 Apache SkyWalking. [#304](https://github.com/apache/incubator-apisix/pull/304)
|
||||
- [JWT 认证](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/jwt-auth-cn.md). [#303](https://github.com/apache/incubator-apisix/pull/303)
|
||||
- :sunrise: **[分布式追踪 OpenTracing](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/zipkin.md)**: 支持 Zipkin 和 Apache SkyWalking. [#304](https://github.com/apache/incubator-apisix/pull/304)
|
||||
- [JWT 认证](https://github.com/apache/incubator-apisix/blob/master/docs/zh/latest//plugins/jwt-auth-cn.md). [#303](https://github.com/apache/incubator-apisix/pull/303)
|
||||
|
||||
### CLI
|
||||
|
||||
|
8
FAQ.md
@ -33,7 +33,7 @@ In addition, APISIX has dynamic routing and hot loading of plug-ins, which is es
|
||||
|
||||
## What's the performance of APISIX?
|
||||
|
||||
One of the goals of APISIX design and development is the highest performance in the industry. Specific test data can be found here:[benchmark](https://github.com/apache/apisix/blob/master/doc/benchmark.md)
|
||||
One of the goals of APISIX design and development is the highest performance in the industry. Specific test data can be found here:[benchmark](https://github.com/apache/apisix/blob/master/docs/en/latest/benchmark.md)
|
||||
|
||||
APISIX is the highest performance API gateway with a single-core QPS of 23,000, with an average delay of only 0.6 milliseconds.
|
||||
|
||||
@ -45,7 +45,7 @@ Yes, in version 0.6 we have dashboard built in, you can operate APISIX through t
|
||||
|
||||
Of course, APISIX provides flexible custom plugins for developers and businesses to write their own logic.
|
||||
|
||||
[How to write plugin](doc/plugin-develop.md)
|
||||
[How to write plugin](docs/en/latest/plugin-develop.md)
|
||||
|
||||
## Why we choose etcd as the configuration center?
|
||||
|
||||
@ -115,7 +115,7 @@ https://github.com/iresty/lua-resty-radixtree#operator-list
|
||||
|
||||
2. Use `traffic-split` plugin to do it.
|
||||
|
||||
Please refer to the [traffic-split.md](doc/plugins/traffic-split.md) plugin documentation for usage examples.
|
||||
Please refer to the [traffic-split.md](docs/en/latest/plugins/traffic-split.md) plugin documentation for usage examples.
|
||||
|
||||
## How to redirect http to https via APISIX?
|
||||
|
||||
@ -271,7 +271,7 @@ Now you can trace the info level log in logs/error.log.
|
||||
## How to reload your own plugin?
|
||||
|
||||
The Apache APISIX plugin supports hot reloading.
|
||||
See the `Hot reload` section in [plugins](./doc/plugins.md) for how to do that.
|
||||
See the `Hot reload` section in [plugins](./docs/en/latest/plugins.md) for how to do that.
|
||||
|
||||
## How to make APISIX listen on multiple ports when handling HTTP or HTTPS requests?
|
||||
|
||||
|
@ -32,7 +32,7 @@ APISIX 基于 etcd 来完成配置的保存和同步,而不是 postgres 或者
|
||||
|
||||
## APISIX 的性能怎么样?
|
||||
|
||||
APISIX 设计和开发的目标之一,就是业界最高的性能。具体测试数据见这里:[benchmark](https://github.com/apache/apisix/blob/master/doc/zh-cn/benchmark.md)
|
||||
APISIX 设计和开发的目标之一,就是业界最高的性能。具体测试数据见这里:[benchmark](https://github.com/apache/apisix/blob/master/docs/zh/latest/benchmark.md)
|
||||
|
||||
APISIX 是当前性能最好的 API 网关,单核 QPS 达到 2.3 万,平均延时仅有 0.6 毫秒。
|
||||
|
||||
@ -44,7 +44,7 @@ APISIX 是当前性能最好的 API 网关,单核 QPS 达到 2.3 万,平均
|
||||
|
||||
当然可以,APISIX 提供了灵活的自定义插件,方便开发者和企业编写自己的逻辑。
|
||||
|
||||
[如何开发插件](doc/zh-cn/plugin-develop.md)
|
||||
[如何开发插件](docs/zh/latest/plugin-develop.md)
|
||||
|
||||
## 我们为什么选择 etcd 作为配置中心?
|
||||
|
||||
@ -116,7 +116,7 @@ https://github.com/iresty/lua-resty-radixtree#operator-list
|
||||
|
||||
2、通过 traffic-split 插件来实现
|
||||
|
||||
详细使用示例请参考 [traffic-split.md](doc/zh-cn/plugins/traffic-split.md) 插件文档。
|
||||
详细使用示例请参考 [traffic-split.md](docs/zh/latest/plugins/traffic-split.md) 插件文档。
|
||||
|
||||
## 如何支持 http 自动跳转到 https?
|
||||
|
||||
@ -219,7 +219,7 @@ Server: APISIX web server
|
||||
|
||||
Apache APISIX 的插件支持热加载。
|
||||
|
||||
具体怎么做参考 [插件](./doc/zh-cn/plugins.md) 中关于“热加载”的部分。
|
||||
具体怎么做参考 [插件](./docs/zh/latest/plugins.md) 中关于“热加载”的部分。
|
||||
|
||||
## 如何让 APISIX 在处理 HTTP 或 HTTPS 请求时监听多个端口
|
||||
|
||||
|
94
README.md
@ -34,7 +34,7 @@ It can also be used as a [k8s ingress controller](https://github.com/apache/apis
|
||||
|
||||
The technical architecture of Apache APISIX:
|
||||
|
||||
![](doc/images/apisix.png)
|
||||
![](docs/assets/images/apisix.png)
|
||||
|
||||
## Community
|
||||
|
||||
@ -65,75 +65,75 @@ A/B testing, canary release, blue-green deployment, limit rate, defense against
|
||||
|
||||
- **Multi protocols**
|
||||
|
||||
- [TCP/UDP Proxy](doc/stream-proxy.md): Dynamic TCP/UDP proxy.
|
||||
- [Dubbo Proxy](doc/plugins/dubbo-proxy.md): Dynamic HTTP to Dubbo proxy.
|
||||
- [Dynamic MQTT Proxy](doc/plugins/mqtt-proxy.md): Supports to load balance MQTT by `client_id`, both support MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
|
||||
- [gRPC proxy](doc/grpc-proxy.md): Proxying gRPC traffic.
|
||||
- [gRPC transcoding](doc/plugins/grpc-transcode.md): Supports protocol transcoding so that clients can access your gRPC API by using HTTP/JSON.
|
||||
- [TCP/UDP Proxy](docs/en/latest/stream-proxy.md): Dynamic TCP/UDP proxy.
|
||||
- [Dubbo Proxy](docs/en/latest/plugins/dubbo-proxy.md): Dynamic HTTP to Dubbo proxy.
|
||||
- [Dynamic MQTT Proxy](docs/en/latest/plugins/mqtt-proxy.md): Supports to load balance MQTT by `client_id`, both support MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
|
||||
- [gRPC proxy](docs/en/latest/grpc-proxy.md): Proxying gRPC traffic.
|
||||
- [gRPC transcoding](docs/en/latest/plugins/grpc-transcode.md): Supports protocol transcoding so that clients can access your gRPC API by using HTTP/JSON.
|
||||
- Proxy Websocket
|
||||
- Proxy Protocol
|
||||
- Proxy Dubbo: Dubbo Proxy based on Tengine.
|
||||
- HTTP(S) Forward Proxy
|
||||
- [SSL](doc/https.md): Dynamically load an SSL certificate.
|
||||
- [SSL](docs/en/latest/https.md): Dynamically load an SSL certificate.
|
||||
|
||||
- **Full dynamic**
|
||||
|
||||
- [Hot Updates And Hot Plugins](doc/plugins.md): Continuously updates its configurations and plugins without restarts!
|
||||
- [Proxy Rewrite](doc/plugins/proxy-rewrite.md): Support rewrite the `host`, `uri`, `schema`, `enable_websocket`, `headers` of the request before send to upstream.
|
||||
- [Response Rewrite](doc/plugins/response-rewrite.md): Set customized response status code, body and header to the client.
|
||||
- [Serverless](doc/plugins/serverless.md): Invoke functions in each phase in APISIX.
|
||||
- [Hot Updates And Hot Plugins](docs/en/latest/plugins.md): Continuously updates its configurations and plugins without restarts!
|
||||
- [Proxy Rewrite](docs/en/latest/plugins/proxy-rewrite.md): Support rewrite the `host`, `uri`, `schema`, `enable_websocket`, `headers` of the request before send to upstream.
|
||||
- [Response Rewrite](docs/en/latest/plugins/response-rewrite.md): Set customized response status code, body and header to the client.
|
||||
- [Serverless](docs/en/latest/plugins/serverless.md): Invoke functions in each phase in APISIX.
|
||||
- Dynamic Load Balancing: Round-robin load balancing with weight.
|
||||
- Hash-based Load Balancing: Load balance with consistent hashing sessions.
|
||||
- [Health Checks](doc/health-check.md): Enable health check on the upstream node, and will automatically filter unhealthy nodes during load balancing to ensure system stability.
|
||||
- [Health Checks](docs/en/latest/health-check.md): Enable health check on the upstream node, and will automatically filter unhealthy nodes during load balancing to ensure system stability.
|
||||
- Circuit-Breaker: Intelligent tracking of unhealthy upstream services.
|
||||
- [Proxy Mirror](doc/plugins/proxy-mirror.md): Provides the ability to mirror client requests.
|
||||
- [Traffic Split](doc/plugins/traffic-split.md): Allows users to incrementally direct percentages of traffic between various upstreams.
|
||||
- [Proxy Mirror](docs/en/latest/plugins/proxy-mirror.md): Provides the ability to mirror client requests.
|
||||
- [Traffic Split](docs/en/latest/plugins/traffic-split.md): Allows users to incrementally direct percentages of traffic between various upstreams.
|
||||
|
||||
- **Fine-grained routing**
|
||||
|
||||
- [Supports full path matching and prefix matching](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
|
||||
- [Support all Nginx built-in variables as conditions for routing](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), so you can use `cookie`, `args`, etc. as routing conditions to implement canary release, A/B testing, etc.
|
||||
- [Supports full path matching and prefix matching](docs/en/latest/router-radixtree.md#how-to-use-libradixtree-in-apisix)
|
||||
- [Support all Nginx built-in variables as conditions for routing](/docs/en/latest/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), so you can use `cookie`, `args`, etc. as routing conditions to implement canary release, A/B testing, etc.
|
||||
- Support [various operators as judgment conditions for routing](https://github.com/iresty/lua-resty-radixtree#operator-list), for example `{"arg_age", ">", 24}`
|
||||
- Support [custom route matching function](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
|
||||
- IPv6: Use IPv6 to match route.
|
||||
- Support [TTL](doc/admin-api.md#route)
|
||||
- [Support priority](doc/router-radixtree.md#3-match-priority)
|
||||
- [Support Batch Http Requests](doc/plugins/batch-requests.md)
|
||||
- Support [TTL](docs/en/latest/admin-api.md#route)
|
||||
- [Support priority](docs/en/latest/router-radixtree.md#3-match-priority)
|
||||
- [Support Batch Http Requests](docs/en/latest/plugins/batch-requests.md)
|
||||
|
||||
- **Security**
|
||||
|
||||
- Authentications: [key-auth](doc/plugins/key-auth.md), [JWT](doc/plugins/jwt-auth.md), [basic-auth](doc/plugins/basic-auth.md), [wolf-rbac](doc/plugins/wolf-rbac.md)
|
||||
- [IP Whitelist/Blacklist](doc/plugins/ip-restriction.md)
|
||||
- [Referer Whitelist/Blacklist](doc/plugins/referer-restriction.md)
|
||||
- [IdP](doc/plugins/openid-connect.md): Support external authentication services, such as Auth0, okta, etc., users can use this to connect to OAuth 2.0 and other authentication methods.
|
||||
- [Limit-req](doc/plugins/limit-req.md)
|
||||
- [Limit-count](doc/plugins/limit-count.md)
|
||||
- [Limit-concurrency](doc/plugins/limit-conn.md)
|
||||
- Authentications: [key-auth](docs/en/latest/plugins/key-auth.md), [JWT](docs/en/latest/plugins/jwt-auth.md), [basic-auth](docs/en/latest/plugins/basic-auth.md), [wolf-rbac](docs/en/latest/plugins/wolf-rbac.md)
|
||||
- [IP Whitelist/Blacklist](docs/en/latest/plugins/ip-restriction.md)
|
||||
- [Referer Whitelist/Blacklist](docs/en/latest/plugins/referer-restriction.md)
|
||||
- [IdP](docs/en/latest/plugins/openid-connect.md): Support external authentication services, such as Auth0, okta, etc., users can use this to connect to OAuth 2.0 and other authentication methods.
|
||||
- [Limit-req](docs/en/latest/plugins/limit-req.md)
|
||||
- [Limit-count](docs/en/latest/plugins/limit-count.md)
|
||||
- [Limit-concurrency](docs/en/latest/plugins/limit-conn.md)
|
||||
- Anti-ReDoS(Regular expression Denial of Service): Built-in policies to Anti ReDoS without configuration.
|
||||
- [CORS](doc/plugins/cors.md) Enable CORS(Cross-origin resource sharing) for your API.
|
||||
- [URI Blocker](doc/plugins/uri-blocker.md): Block client request by URI.
|
||||
- [Request Validator](doc/plugins/request-validation.md)
|
||||
- [CORS](docs/en/latest/plugins/cors.md) Enable CORS(Cross-origin resource sharing) for your API.
|
||||
- [URI Blocker](docs/en/latest/plugins/uri-blocker.md): Block client request by URI.
|
||||
- [Request Validator](docs/en/latest/plugins/request-validation.md)
|
||||
|
||||
- **OPS friendly**
|
||||
|
||||
- OpenTracing: support [Apache Skywalking](doc/plugins/skywalking.md) and [Zipkin](doc/plugins/zipkin.md)
|
||||
- works with external service discovery:In addition to the built-in etcd, it also supports `Consul` and `Nacos` [DNS discovery mode](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), and [Eureka](doc/discovery.md)
|
||||
- Monitoring And Metrics: [Prometheus](doc/plugins/prometheus.md)
|
||||
- OpenTracing: support [Apache Skywalking](docs/en/latest/plugins/skywalking.md) and [Zipkin](docs/en/latest/plugins/zipkin.md)
|
||||
- works with external service discovery:In addition to the built-in etcd, it also supports `Consul` and `Nacos` [DNS discovery mode](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), and [Eureka](docs/en/latest/discovery.md)
|
||||
- Monitoring And Metrics: [Prometheus](docs/en/latest/plugins/prometheus.md)
|
||||
- Clustering: APISIX nodes are stateless, creates clustering of the configuration center, please refer to [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md).
|
||||
- High availability: support to configure multiple etcd addresses in the same cluster.
|
||||
- [Dashboard](https://github.com/apache/apisix-dashboard)
|
||||
- Version Control: Supports rollbacks of operations.
|
||||
- CLI: start\stop\reload APISIX through the command line.
|
||||
- [Stand-alone mode](doc/stand-alone.md): Supports to load route rules from local yaml file, it is more friendly such as under the kubernetes(k8s).
|
||||
- [Global Rule](doc/architecture-design.md#global-rule): Allows to run any plugin for all request, eg: limit rate, IP filter etc.
|
||||
- [Stand-alone mode](docs/en/latest/stand-alone.md): Supports to load route rules from local yaml file, it is more friendly such as under the kubernetes(k8s).
|
||||
- [Global Rule](docs/en/latest/architecture-design.md#global-rule): Allows to run any plugin for all request, eg: limit rate, IP filter etc.
|
||||
- High performance: The single-core QPS reaches 18k with an average delay of less than 0.2 milliseconds.
|
||||
- [Fault Injection](doc/plugins/fault-injection.md)
|
||||
- [REST Admin API](doc/admin-api.md): Using the REST Admin API to control Apache APISIX, which only allows 127.0.0.1 access by default, you can modify the `allow_admin` field in `conf/config.yaml` to specify a list of IPs that are allowed to call the Admin API. Also note that the Admin API uses key auth to verify the identity of the caller. **The `admin_key` field in `conf/config.yaml` needs to be modified before deployment to ensure security**.
|
||||
- External Loggers: Export access logs to external log management tools. ([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
|
||||
- [Fault Injection](docs/en/latest/plugins/fault-injection.md)
|
||||
- [REST Admin API](docs/en/latest/admin-api.md): Using the REST Admin API to control Apache APISIX, which only allows 127.0.0.1 access by default, you can modify the `allow_admin` field in `conf/config.yaml` to specify a list of IPs that are allowed to call the Admin API. Also note that the Admin API uses key auth to verify the identity of the caller. **The `admin_key` field in `conf/config.yaml` needs to be modified before deployment to ensure security**.
|
||||
- External Loggers: Export access logs to external log management tools. ([HTTP Logger](docs/en/latest/plugins/http-logger.md), [TCP Logger](docs/en/latest/plugins/tcp-logger.md), [Kafka Logger](docs/en/latest/plugins/kafka-logger.md), [UDP Logger](docs/en/latest/plugins/udp-logger.md))
|
||||
- [Helm charts](https://github.com/apache/apisix-helm-chart)
|
||||
|
||||
- **Highly scalable**
|
||||
- [Custom plugins](doc/plugin-develop.md): Allows hooking of common phases, such as `rewrite`, `access`, `header filter`, `body filter` and `log`, also allows to hook the `balancer` stage.
|
||||
- [Custom plugins](docs/en/latest/plugin-develop.md): Allows hooking of common phases, such as `rewrite`, `access`, `header filter`, `body filter` and `log`, also allows to hook the `balancer` stage.
|
||||
- Custom load balancing algorithms: You can use custom load balancing algorithms during the `balancer` phase.
|
||||
- Custom routing: Support users to implement routing algorithms themselves.
|
||||
|
||||
@ -148,7 +148,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
There are several ways to install the Apache Release version of APISIX:
|
||||
|
||||
1. Source code compilation (applicable to all systems)
|
||||
- Installation runtime dependencies: OpenResty and etcd, and compilation dependencies: luarocks. Refer to [install dependencies documentation](doc/install-dependencies.md)
|
||||
- Installation runtime dependencies: OpenResty and etcd, and compilation dependencies: luarocks. Refer to [install dependencies documentation](docs/en/latest/install-dependencies.md)
|
||||
- Download the latest source code release package:
|
||||
|
||||
```shell
|
||||
@ -186,7 +186,7 @@ There are several ways to install the Apache Release version of APISIX:
|
||||
The Docker image does not include `etcd`, you can refer to [docker compose example](https://github.com/apache/apisix-docker/tree/master/example) to start a test cluster.
|
||||
|
||||
3. RPM package(only for CentOS 7)
|
||||
- Installation runtime dependencies: OpenResty, etcd and OpenSSL develop library, refer to [install dependencies documentation](doc/install-dependencies.md#centos-7)
|
||||
- Installation runtime dependencies: OpenResty, etcd and OpenSSL develop library, refer to [install dependencies documentation](docs/en/latest/install-dependencies.md#centos-7)
|
||||
- install APISIX:
|
||||
|
||||
```shell
|
||||
@ -229,21 +229,21 @@ There are several ways to install the Apache Release version of APISIX:
|
||||
|
||||
2. Getting started
|
||||
|
||||
The getting started guide is a great way to learn the basics of APISIX, just follow the steps in [Getting Started](doc/getting-started.md).
|
||||
The getting started guide is a great way to learn the basics of APISIX, just follow the steps in [Getting Started](docs/en/latest/getting-started.md).
|
||||
|
||||
Further, you can follow the documentation to try more [plugins](doc/README.md#plugins).
|
||||
Further, you can follow the documentation to try more [plugins](docs/en/latest/README.md#plugins).
|
||||
|
||||
3. Admin API
|
||||
|
||||
Apache APISIX provides [REST Admin API](doc/admin-api.md) to dynamic control the Apache APISIX cluster.
|
||||
Apache APISIX provides [REST Admin API](docs/en/latest/admin-api.md) to dynamic control the Apache APISIX cluster.
|
||||
|
||||
4. Plugin development
|
||||
|
||||
You can refer to [plugin development guide](doc/plugin-develop.md), and [sample plugin `echo`](doc/plugins/echo.md) documentation and code implementation.
|
||||
You can refer to [plugin development guide](docs/en/latest/plugin-develop.md), and [sample plugin `echo`](docs/en/latest/plugins/echo.md) documentation and code implementation.
|
||||
|
||||
Please note that Apache APISIX plugins' added, updated, deleted, etc. are hot loaded, without restarting the service.
|
||||
|
||||
For more documents, please refer to [Apache APISIX Document Index](doc/README.md)
|
||||
For more documents, please refer to [Apache APISIX Document Index](docs/en/latest/README.md)
|
||||
|
||||
## Benchmark
|
||||
|
||||
@ -295,7 +295,7 @@ Benchmark comparison test [details data](https://gist.github.com/membphis/137db9
|
||||
|
||||
### Contributor Over Time
|
||||
|
||||
![contributor-over-time](./doc/images/contributor-over-time.png)
|
||||
![contributor-over-time](docs/assets/images/contributor-over-time.png)
|
||||
|
||||
## Videos And Articles
|
||||
|
||||
@ -319,7 +319,7 @@ A wide variety of companies and organizations use APISIX for research, productio
|
||||
|
||||
<img src="https://raw.githubusercontent.com/api7/website-of-API7/master/user-wall.jpg" width="900" height="500">
|
||||
|
||||
Users are encouraged to add themselves to the [Powered By](doc/powered-by.md) page.
|
||||
Users are encouraged to add themselves to the [Powered By](docs/en/latest/powered-by.md) page.
|
||||
|
||||
## Landscape
|
||||
|
||||
|
94
README_CN.md
@ -32,7 +32,7 @@
|
||||
|
||||
Apache APISIX 的技术架构如下图所示:
|
||||
|
||||
![](doc/images/apisix.png)
|
||||
![](docs/assets/images/apisix.png)
|
||||
|
||||
## 社区
|
||||
|
||||
@ -63,75 +63,75 @@ A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵
|
||||
|
||||
- **多协议**
|
||||
|
||||
- [TCP/UDP 代理](doc/zh-cn/stream-proxy.md): 动态 TCP/UDP 代理。
|
||||
- [Dubbo 代理](doc/plugins/dubbo-proxy.md): 动态代理 HTTP 请求到 Dubbo 后端。
|
||||
- [动态 MQTT 代理](doc/zh-cn/plugins/mqtt-proxy.md): 支持用 `client_id` 对 MQTT 进行负载均衡,同时支持 MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html) 和 [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 两个协议标准。
|
||||
- [gRPC 代理](doc/zh-cn/grpc-proxy.md):通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
|
||||
- [gRPC 协议转换](doc/zh-cn/plugins/grpc-transcode.md):支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
|
||||
- [TCP/UDP 代理](docs/zh/latest/stream-proxy.md): 动态 TCP/UDP 代理。
|
||||
- [Dubbo 代理](docs/zh/latest/plugins/dubbo-proxy.md): 动态代理 HTTP 请求到 Dubbo 后端。
|
||||
- [动态 MQTT 代理](docs/zh/latest/plugins/mqtt-proxy.md): 支持用 `client_id` 对 MQTT 进行负载均衡,同时支持 MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html) 和 [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 两个协议标准。
|
||||
- [gRPC 代理](docs/zh/latest/grpc-proxy.md):通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
|
||||
- [gRPC 协议转换](docs/zh/latest/plugins/grpc-transcode.md):支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
|
||||
- Websocket 代理
|
||||
- Proxy Protocol
|
||||
- Dubbo 代理:基于 Tengine,可以实现 Dubbo 请求的代理。
|
||||
- HTTP(S) 反向代理
|
||||
- [SSL](doc/zh-cn/https.md):动态加载 SSL 证书。
|
||||
- [SSL](docs/zh/latest/https.md):动态加载 SSL 证书。
|
||||
|
||||
- **全动态能力**
|
||||
|
||||
- [热更新和热插件](doc/zh-cn/plugins.md): 无需重启服务,就可以持续更新配置和插件。
|
||||
- [代理请求重写](doc/zh-cn/plugins/proxy-rewrite.md): 支持重写请求上游的`host`、`uri`、`schema`、`enable_websocket`、`headers`信息。
|
||||
- [输出内容重写](doc/zh-cn/plugins/response-rewrite.md): 支持自定义修改返回内容的 `status code`、`body`、`headers`。
|
||||
- [Serverless](doc/zh-cn/plugins/serverless.md): 在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
|
||||
- [热更新和热插件](docs/zh/latest/plugins.md): 无需重启服务,就可以持续更新配置和插件。
|
||||
- [代理请求重写](docs/zh/latest/plugins/proxy-rewrite.md): 支持重写请求上游的`host`、`uri`、`schema`、`enable_websocket`、`headers`信息。
|
||||
- [输出内容重写](docs/zh/latest/plugins/response-rewrite.md): 支持自定义修改返回内容的 `status code`、`body`、`headers`。
|
||||
- [Serverless](docs/zh/latest/plugins/serverless.md): 在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
|
||||
- 动态负载均衡:动态支持有权重的 round-robin 负载平衡。
|
||||
- 支持一致性 hash 的负载均衡:动态支持一致性 hash 的负载均衡。
|
||||
- [健康检查](doc/zh-cn/health-check.md):启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
|
||||
- [健康检查](docs/zh/latest/health-check.md):启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
|
||||
- 熔断器: 智能跟踪不健康上游服务。
|
||||
- [代理镜像](doc/zh-cn/plugins/proxy-mirror.md): 提供镜像客户端请求的能力。
|
||||
- [流量拆分](doc/zh-cn/plugins/traffic-split.md): 允许用户逐步控制各个上游之间的流量百分比。
|
||||
- [代理镜像](docs/zh/latest/plugins/proxy-mirror.md): 提供镜像客户端请求的能力。
|
||||
- [流量拆分](docs/zh/latest/plugins/traffic-split.md): 允许用户逐步控制各个上游之间的流量百分比。
|
||||
|
||||
- **精细化路由**
|
||||
|
||||
- [支持全路径匹配和前缀匹配](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
|
||||
- [支持使用 Nginx 所有内置变量做为路由的条件](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable),所以你可以使用 `cookie`, `args` 等做为路由的条件,来实现灰度发布、A/B 测试等功能
|
||||
- [支持全路径匹配和前缀匹配](docs/zh/latest/router-radixtree.md#how-to-use-libradixtree-in-apisix)
|
||||
- [支持使用 Nginx 所有内置变量做为路由的条件](/docs/zh/latest/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable),所以你可以使用 `cookie`, `args` 等做为路由的条件,来实现灰度发布、A/B 测试等功能
|
||||
- 支持[各类操作符做为路由的判断条件](https://github.com/iresty/lua-resty-radixtree#operator-list),比如 `{"arg_age", ">", 24}`
|
||||
- 支持[自定义路由匹配函数](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
|
||||
- IPv6:支持使用 IPv6 格式匹配路由
|
||||
- 支持路由的[自动过期(TTL)](doc/zh-cn/admin-api.md#route)
|
||||
- [支持路由的优先级](doc/router-radixtree.md#3-match-priority)
|
||||
- [支持批量 Http 请求](doc/zh-cn/plugins/batch-requests.md)
|
||||
- 支持路由的[自动过期(TTL)](docs/zh/latest/admin-api.md#route)
|
||||
- [支持路由的优先级](docs/zh/latest/router-radixtree.md#3-match-priority)
|
||||
- [支持批量 Http 请求](docs/zh/latest/plugins/batch-requests.md)
|
||||
|
||||
- **安全防护**
|
||||
|
||||
- 多种身份认证方式: [key-auth](doc/zh-cn/plugins/key-auth.md), [JWT](doc/zh-cn/plugins/jwt-auth.md), [basic-auth](doc/zh-cn/plugins/basic-auth.md), [wolf-rbac](doc/zh-cn/plugins/wolf-rbac.md)。
|
||||
- [IP 黑白名单](doc/zh-cn/plugins/ip-restriction.md)
|
||||
- [Referer 白名单](doc/zh-cn/plugins/referer-restriction.md)
|
||||
- [IdP 支持](doc/plugins/openid-connect.md): 支持外部的身份认证服务,比如 Auth0,Okta,Authing 等,用户可以借此来对接 Oauth2.0 等认证方式。
|
||||
- [限制速率](doc/zh-cn/plugins/limit-req.md)
|
||||
- [限制请求数](doc/zh-cn/plugins/limit-count.md)
|
||||
- [限制并发](doc/zh-cn/plugins/limit-conn.md)
|
||||
- 多种身份认证方式: [key-auth](docs/zh/latest/plugins/key-auth.md), [JWT](docs/zh/latest/plugins/jwt-auth.md), [basic-auth](docs/zh/latest/plugins/basic-auth.md), [wolf-rbac](docs/zh/latest/plugins/wolf-rbac.md)。
|
||||
- [IP 黑白名单](docs/zh/latest/plugins/ip-restriction.md)
|
||||
- [Referer 白名单](docs/zh/latest/plugins/referer-restriction.md)
|
||||
- [IdP 支持](docs/zh/latest/plugins/openid-connect.md): 支持外部的身份认证服务,比如 Auth0,Okta,Authing 等,用户可以借此来对接 Oauth2.0 等认证方式。
|
||||
- [限制速率](docs/zh/latest/plugins/limit-req.md)
|
||||
- [限制请求数](docs/zh/latest/plugins/limit-count.md)
|
||||
- [限制并发](docs/zh/latest/plugins/limit-conn.md)
|
||||
- 防御 ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御 ReDoS。
|
||||
- [CORS](doc/zh-cn/plugins/cors.md):为你的 API 启用 CORS。
|
||||
- [URI 拦截器](doc/zh-cn/plugins/uri-blocker.md):根据 URI 拦截用户请求。
|
||||
- [请求验证器](doc/zh-cn/plugins/request-validation.md)。
|
||||
- [CORS](docs/zh/latest/plugins/cors.md):为你的 API 启用 CORS。
|
||||
- [URI 拦截器](docs/zh/latest/plugins/uri-blocker.md):根据 URI 拦截用户请求。
|
||||
- [请求验证器](docs/zh/latest/plugins/request-validation.md)。
|
||||
|
||||
- **运维友好**
|
||||
|
||||
- OpenTracing 可观测性: 支持 [Apache Skywalking](doc/zh-cn/plugins/skywalking.md) 和 [Zipkin](doc/zh-cn/plugins/zipkin.md)。
|
||||
- 对接外部服务发现:除了内置的 etcd 外,还支持 `Consul` 和 `Nacos` 的 [DNS 发现模式](https://github.com/apache/apisix/issues/1731#issuecomment-646392129),以及 [Eureka](doc/zh-cn/discovery.md)。
|
||||
- 监控和指标: [Prometheus](doc/zh-cn/plugins/prometheus.md)
|
||||
- OpenTracing 可观测性: 支持 [Apache Skywalking](docs/zh/latest/plugins/skywalking.md) 和 [Zipkin](docs/zh/latest/plugins/zipkin.md)。
|
||||
- 对接外部服务发现:除了内置的 etcd 外,还支持 `Consul` 和 `Nacos` 的 [DNS 发现模式](https://github.com/apache/apisix/issues/1731#issuecomment-646392129),以及 [Eureka](docs/zh/latest/discovery.md)。
|
||||
- 监控和指标: [Prometheus](docs/zh/latest/plugins/prometheus.md)
|
||||
- 集群:APISIX 节点是无状态的,创建配置中心集群请参考 [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md)。
|
||||
- 高可用:支持配置同一个集群内的多个 etcd 地址。
|
||||
- [控制台](https://github.com/apache/apisix-dashboard): 操作 APISIX 集群。
|
||||
- 版本控制:支持操作的多次回滚。
|
||||
- CLI: 使用命令行来启动、关闭和重启 APISIX。
|
||||
- [单机模式](doc/zh-cn/stand-alone.md): 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。
|
||||
- [全局规则](doc/zh-cn/architecture-design.md#global-rule):允许对所有请求执行插件,比如黑白名单、限流限速等。
|
||||
- [单机模式](docs/zh/latest/stand-alone.md): 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。
|
||||
- [全局规则](docs/zh/latest/architecture-design.md#global-rule):允许对所有请求执行插件,比如黑白名单、限流限速等。
|
||||
- 高性能:在单核上 QPS 可以达到 18k,同时延迟只有 0.2 毫秒。
|
||||
- [故障注入](doc/zh-cn/plugins/fault-injection.md)
|
||||
- [REST Admin API](doc/zh-cn/admin-api.md): 使用 REST Admin API 来控制 Apache APISIX,默认只允许 127.0.0.1 访问,你可以修改 `conf/config.yaml` 中的 `allow_admin` 字段,指定允许调用 Admin API 的 IP 列表。同时需要注意的是,Admin API 使用 key auth 来校验调用者身份,**在部署前需要修改 `conf/config.yaml` 中的 `admin_key` 字段,来保证安全。**
|
||||
- 外部日志记录器:将访问日志导出到外部日志管理工具。([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
|
||||
- [故障注入](docs/zh/latest/plugins/fault-injection.md)
|
||||
- [REST Admin API](docs/zh/latest/admin-api.md): 使用 REST Admin API 来控制 Apache APISIX,默认只允许 127.0.0.1 访问,你可以修改 `conf/config.yaml` 中的 `allow_admin` 字段,指定允许调用 Admin API 的 IP 列表。同时需要注意的是,Admin API 使用 key auth 来校验调用者身份,**在部署前需要修改 `conf/config.yaml` 中的 `admin_key` 字段,来保证安全。**
|
||||
- 外部日志记录器:将访问日志导出到外部日志管理工具。([HTTP Logger](docs/zh/latest/plugins/http-logger.md), [TCP Logger](docs/zh/latest/plugins/tcp-logger.md), [Kafka Logger](docs/zh/latest/plugins/kafka-logger.md), [UDP Logger](docs/zh/latest/plugins/udp-logger.md))
|
||||
- [Helm charts](https://github.com/apache/apisix-helm-chart)
|
||||
|
||||
- **高度可扩展**
|
||||
- [自定义插件](doc/zh-cn/plugin-develop.md): 允许挂载常见阶段,例如`init`, `rewrite`,`access`,`balancer`,`header filter`,`body filter` 和 `log` 阶段。
|
||||
- [自定义插件](docs/zh/latest/plugin-develop.md): 允许挂载常见阶段,例如`init`, `rewrite`,`access`,`balancer`,`header filter`,`body filter` 和 `log` 阶段。
|
||||
- 自定义负载均衡算法:可以在 `balancer` 阶段使用自定义负载均衡算法。
|
||||
- 自定义路由: 支持用户自己实现路由算法。
|
||||
|
||||
@ -146,7 +146,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
有以下几种方式来安装 APISIX 的 Apache Release 版本:
|
||||
|
||||
1. 源码编译(适用所有系统)
|
||||
- 安装运行时依赖:OpenResty 和 etcd,以及编译的依赖:luarocks。参考[依赖安装文档](doc/zh-cn/install-dependencies.md)
|
||||
- 安装运行时依赖:OpenResty 和 etcd,以及编译的依赖:luarocks。参考[依赖安装文档](docs/zh/latest/install-dependencies.md)
|
||||
- 下载最新的源码发布包:
|
||||
|
||||
```shell
|
||||
@ -184,7 +184,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
Docker 镜像中并不包含 etcd,你可以参考 [docker compose 的示例](https://github.com/apache/apisix-docker/tree/master/example)来启动一个测试集群。
|
||||
|
||||
3. RPM 包(只适用于 CentOS 7)
|
||||
- 安装依赖:OpenResty, etcd 和 OpenSSL develop library,参考[依赖安装文档](doc/zh-cn/install-dependencies.md#centos-7)
|
||||
- 安装依赖:OpenResty, etcd 和 OpenSSL develop library,参考[依赖安装文档](docs/zh/latest/install-dependencies.md#centos-7)
|
||||
- 安装 APISIX:
|
||||
|
||||
```shell
|
||||
@ -227,21 +227,21 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
|
||||
2. 入门指南
|
||||
|
||||
入门指南是学习 APISIX 基础知识的好方法。按照 [入门指南](doc/zh-cn/getting-started.md)的步骤即可。
|
||||
入门指南是学习 APISIX 基础知识的好方法。按照 [入门指南](docs/zh/latest/getting-started.md)的步骤即可。
|
||||
|
||||
更进一步,你可以跟着文档来尝试更多的[插件](doc/zh-cn/README.md#插件)。
|
||||
更进一步,你可以跟着文档来尝试更多的[插件](docs/zh/latest/README.md#插件)。
|
||||
|
||||
3. Admin API
|
||||
|
||||
Apache APISIX 提供了 [REST Admin API](doc/zh-cn/admin-api.md),方便动态控制 Apache APISIX 集群。
|
||||
Apache APISIX 提供了 [REST Admin API](docs/zh/latest/admin-api.md),方便动态控制 Apache APISIX 集群。
|
||||
|
||||
4. 插件二次开发
|
||||
|
||||
可以参考[插件开发指南](doc/zh-cn/plugin-develop.md),以及[示例插件 echo](doc/zh-cn/plugins/echo.md) 的文档和代码实现。
|
||||
可以参考[插件开发指南](docs/zh/latest/plugin-develop.md),以及[示例插件 echo](docs/zh/latest/plugins/echo.md) 的文档和代码实现。
|
||||
|
||||
请注意,Apache APISIX 的插件新增、更新、删除等都是热加载的,不用重启服务。
|
||||
|
||||
更多文档请参考 [Apache APISIX 文档索引](doc/zh-cn/README.md)。
|
||||
更多文档请参考 [Apache APISIX 文档索引](docs/zh/latest/README.md)。
|
||||
|
||||
## 性能测试
|
||||
|
||||
@ -293,7 +293,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
|
||||
### 贡献者变化
|
||||
|
||||
![contributor-over-time](./doc/images/contributor-over-time.png)
|
||||
![contributor-over-time](docs/assets/images/contributor-over-time.png)
|
||||
|
||||
## 视频和文章
|
||||
|
||||
@ -323,7 +323,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
|
||||
<img src="https://raw.githubusercontent.com/api7/website-of-API7/master/user-wall.jpg" width="900" height="500">
|
||||
|
||||
欢迎用户把自己加入到 [Powered By](doc/powered-by.md) 页面。
|
||||
欢迎用户把自己加入到 [Powered By](docs/zh/latest/powered-by.md) 页面。
|
||||
|
||||
## 全景图
|
||||
|
||||
|
94
README_ES.md
@ -34,7 +34,7 @@ También puede usarse como [k8s ingress controller (control de ingreso)](https:/
|
||||
|
||||
La arquitectura técnica de Apache APISIX:
|
||||
|
||||
![](doc/images/apisix.png)
|
||||
![](docs/assets/images/apisix.png)
|
||||
|
||||
## Communidad
|
||||
|
||||
@ -65,75 +65,75 @@ ensayos A/B, ensayos de despliegue de canarios (canary release), despliegue azul
|
||||
|
||||
- **Multi protocolos**
|
||||
|
||||
- [Proxy TCP/UDP](doc/stream-proxy.md): Proxy TCP/UDP dinámico.
|
||||
- [Proxy Dubbo](doc/plugins/dubbo-proxy.md): Proxy dinámico HTTP a Dubbo.
|
||||
- [Proxy MQTT Dinámico](doc/plugins/mqtt-proxy.md): Soporte de balance de carga MQTT por `client_id`, soporta ambos MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
|
||||
- [Proxy gRPC](doc/grpc-proxy.md): Tráfico gRPC a través de Proxy.
|
||||
- [Transcodificado gRPC](doc/plugins/grpc-transcode.md): Soporta transcodificado de protocolo para que los clientes puedan acceder su gRPC API usando HTTP/JSON.
|
||||
- [Proxy TCP/UDP](docs/en/latest/stream-proxy.md): Proxy TCP/UDP dinámico.
|
||||
- [Proxy Dubbo](docs/en/latest/plugins/dubbo-proxy.md): Proxy dinámico HTTP a Dubbo.
|
||||
- [Proxy MQTT Dinámico](docs/en/latest/plugins/mqtt-proxy.md): Soporte de balance de carga MQTT por `client_id`, soporta ambos MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
|
||||
- [Proxy gRPC](docs/en/latest/grpc-proxy.md): Tráfico gRPC a través de Proxy.
|
||||
- [Transcodificado gRPC](docs/en/latest/plugins/grpc-transcode.md): Soporta transcodificado de protocolo para que los clientes puedan acceder su gRPC API usando HTTP/JSON.
|
||||
- Proxy de Websocket
|
||||
- Proxy de Protocolo
|
||||
- Proxy Dubbo: Proxy de Dubbo basado en Tengine.
|
||||
- Proxy de HTTP(S) hacia adelante
|
||||
- [SSL](doc/https.md): Carga dinámica de certificado SSL.
|
||||
- [SSL](docs/en/latest/https.md): Carga dinámica de certificado SSL.
|
||||
|
||||
- **Completamente Dinámico**
|
||||
|
||||
- [Las actualizaciones y los plugins más recientes](doc/plugins.md): Actualiza sus configuraciones y plugins sin reinicios!
|
||||
- [Reescritura de proxy](doc/plugins/proxy-rewrite.md): Soporta la reescritura de `host`, `uri`, `schema`, `enable_websocket`, `headers` para el request antes de reenviarlo aguas arriba (upstream).
|
||||
- [Reescritura de respuesta](doc/plugins/response-rewrite.md): Establece el código de estatus de respuesta personalizado, así como el cuerpo y el encabezado para el cliente.
|
||||
- [Sin servidor (serverless)](doc/plugins/serverless.md): Invoque funciones en cada fase en APISIX.
|
||||
- [Las actualizaciones y los plugins más recientes](docs/en/latest/plugins.md): Actualiza sus configuraciones y plugins sin reinicios!
|
||||
- [Reescritura de proxy](docs/en/latest/plugins/proxy-rewrite.md): Soporta la reescritura de `host`, `uri`, `schema`, `enable_websocket`, `headers` para el request antes de reenviarlo aguas arriba (upstream).
|
||||
- [Reescritura de respuesta](docs/en/latest/plugins/response-rewrite.md): Establece el código de estatus de respuesta personalizado, así como el cuerpo y el encabezado para el cliente.
|
||||
- [Sin servidor (serverless)](docs/en/latest/plugins/serverless.md): Invoque funciones en cada fase en APISIX.
|
||||
- Balance dinámico de cargas: Balanceo de cargas Round-robin usando pesos.
|
||||
- Balance de cargas basado en Hash: Balanceo de cargas con sesiones de hashing consistentes.
|
||||
- [Comprobaciones del sistema](doc/health-check.md): Permite comprobaciones del sistema en el nodo aguas arriba, y automáticamente filtrará nodos problemáticos durante el balanceo de cargas para asegurar la estabilidad del sistema.
|
||||
- [Comprobaciones del sistema](docs/en/latest/health-check.md): Permite comprobaciones del sistema en el nodo aguas arriba, y automáticamente filtrará nodos problemáticos durante el balanceo de cargas para asegurar la estabilidad del sistema.
|
||||
- Interruptor del circuito: Rastreo inteligente de servicios aguas arriba que tengan problemas.
|
||||
- [Reflejo de proxy (mirror)](doc/plugins/proxy-mirror.md): Proporciona la capacidad de reflejar (mirror) los request (solicitudes) del cliente.
|
||||
- [Bifurcación de tráfico](doc/plugins/traffic-split.md): Permite a los usuarios dirigir de manera creciente porciones del tráfico entre varias corrientes aguas arriba (upstreams).
|
||||
- [Reflejo de proxy (mirror)](docs/en/latest/plugins/proxy-mirror.md): Proporciona la capacidad de reflejar (mirror) los request (solicitudes) del cliente.
|
||||
- [Bifurcación de tráfico](docs/en/latest/plugins/traffic-split.md): Permite a los usuarios dirigir de manera creciente porciones del tráfico entre varias corrientes aguas arriba (upstreams).
|
||||
|
||||
- **Enrutamiento con control fino (fine grain)**
|
||||
|
||||
- [Soporta correspondencia completa de la ruta y correspondencia del prefijo](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
|
||||
- [Soporta todas las variables integradas en Nginx como condiciones para el enrutamiento](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), así que pueden usarse `cookie`, `args`, etc. como condiciones de enrutamiento para implementar ensayos de desplegado de canarios, ensayoss A/B, etc.
|
||||
- [Soporta correspondencia completa de la ruta y correspondencia del prefijo](docs/en/latest/router-radixtree.md#how-to-use-libradixtree-in-apisix)
|
||||
- [Soporta todas las variables integradas en Nginx como condiciones para el enrutamiento](/docs/en/latest/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), así que pueden usarse `cookie`, `args`, etc. como condiciones de enrutamiento para implementar ensayos de desplegado de canarios, ensayoss A/B, etc.
|
||||
- Soporta [varios operadores como condiciones de juicio para el enrutamiento](https://github.com/iresty/lua-resty-radixtree#operator-list), por ejemplo `{"arg_age", ">", 24}`
|
||||
- Soporta [función personalizada de correspondencia de ruta](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
|
||||
- IPv6: Usar IPv6 para hacer corresponder la ruta.
|
||||
- Soporta [TTL](doc/admin-api.md#route)
|
||||
- [Soporta prioridades](doc/router-radixtree.md#3-match-priority)
|
||||
- [Soporta solicitudes Batch Http (por lotes)](doc/plugins/batch-requests.md)
|
||||
- Soporta [TTL](docs/en/latest/admin-api.md#route)
|
||||
- [Soporta prioridades](docs/en/latest/router-radixtree.md#3-match-priority)
|
||||
- [Soporta solicitudes Batch Http (por lotes)](docs/en/latest/plugins/batch-requests.md)
|
||||
|
||||
- **Seguridad**
|
||||
|
||||
- Autenticaciones: [key-auth](doc/plugins/key-auth.md), [JWT](doc/plugins/jwt-auth.md), [basic-auth](doc/plugins/basic-auth.md), [wolf-rbac](doc/plugins/wolf-rbac.md)
|
||||
- [IP Whitelist/Blacklist](doc/plugins/ip-restriction.md)
|
||||
- [Referente Whitelist/Blacklist (listas blancas y negras)](doc/plugins/referer-restriction.md)
|
||||
- [IdP](doc/plugins/openid-connect.md): Soporta servicios externos de autenticación, tales como Auth0, okta, etc., los usuarios pueden usar esto para conectarse a OAuth 2.0 y otros métodos de autenticación.
|
||||
- [Límite de procesamiento de solicitudes (Limit-req)](doc/plugins/limit-req.md)
|
||||
- [Límite de contador (Limit-count)](doc/plugins/limit-count.md)
|
||||
- [Límite de concurrencia (Limit-concurrency)](doc/plugins/limit-conn.md)
|
||||
- Autenticaciones: [key-auth](docs/en/latest/plugins/key-auth.md), [JWT](docs/en/latest/plugins/jwt-auth.md), [basic-auth](docs/en/latest/plugins/basic-auth.md), [wolf-rbac](docs/en/latest/plugins/wolf-rbac.md)
|
||||
- [IP Whitelist/Blacklist](docs/en/latest/plugins/ip-restriction.md)
|
||||
- [Referente Whitelist/Blacklist (listas blancas y negras)](docs/en/latest/plugins/referer-restriction.md)
|
||||
- [IdP](docs/en/latest/plugins/openid-connect.md): Soporta servicios externos de autenticación, tales como Auth0, okta, etc., los usuarios pueden usar esto para conectarse a OAuth 2.0 y otros métodos de autenticación.
|
||||
- [Límite de procesamiento de solicitudes (Limit-req)](docs/en/latest/plugins/limit-req.md)
|
||||
- [Límite de contador (Limit-count)](docs/en/latest/plugins/limit-count.md)
|
||||
- [Límite de concurrencia (Limit-concurrency)](docs/en/latest/plugins/limit-conn.md)
|
||||
- Anti-ReDoS (Negación regular del servicio): políticas integradas para Anti ReDoS sin configuración.
|
||||
- [CORS](doc/plugins/cors.md) Activa CORS (Compartir recursos de origen cruzado) para su API.
|
||||
- [Bloqueador URI](doc/plugins/uri-blocker.md): Bloquea solicitudes del cliente por URI.
|
||||
- [Validador de solicitudes (Request Validator)](doc/plugins/request-validation.md)
|
||||
- [CORS](docs/en/latest/plugins/cors.md) Activa CORS (Compartir recursos de origen cruzado) para su API.
|
||||
- [Bloqueador URI](docs/en/latest/plugins/uri-blocker.md): Bloquea solicitudes del cliente por URI.
|
||||
- [Validador de solicitudes (Request Validator)](docs/en/latest/plugins/request-validation.md)
|
||||
|
||||
- **OPS amigable**
|
||||
|
||||
- OpenTracing (rastreo abierto): Soporta [Apache Skywalking](doc/plugins/skywalking.md) y [Zipkin](doc/plugins/zipkin.md)
|
||||
- Trabaja con descubrimiento de servicio externo:Aparte del etcd integrado (Equipo Terminal del Circuito de Datos), también soporta `Consul` y `Nacos` [DNS en modo descubrimiento](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), y [Eureka](doc/discovery.md)
|
||||
- Monitoreo y métrica (control de mediciones): [Prometheus](doc/plugins/prometheus.md)
|
||||
- OpenTracing (rastreo abierto): Soporta [Apache Skywalking](docs/en/latest/plugins/skywalking.md) y [Zipkin](docs/en/latest/plugins/zipkin.md)
|
||||
- Trabaja con descubrimiento de servicio externo:Aparte del etcd integrado (Equipo Terminal del Circuito de Datos), también soporta `Consul` y `Nacos` [DNS en modo descubrimiento](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), y [Eureka](docs/en/latest/discovery.md)
|
||||
- Monitoreo y métrica (control de mediciones): [Prometheus](docs/en/latest/plugins/prometheus.md)
|
||||
- Agrupación (clustering): Nodos APISIX sin estados, crea agrupaciones del centro de configuración, por favor consultar [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md).
|
||||
- Alta disponibilidad: Soporta configurar múltiples direcciones etcd en el mismo grupo (cluster).
|
||||
- [Tablero](https://github.com/apache/apisix-dashboard)
|
||||
- Control de versión: Soporta retroceso o deshacer de operaciones.
|
||||
- CLI: comenzar\detenerse\recargar APISIX usando la línea de comando.
|
||||
- [Modo stand-alone (por su cuenta)](doc/stand-alone.md): Soporta cargar reglas de ruta desde un archivo local yaml, siendo más amigable que kubernetes(k8s).
|
||||
- [Regla global](doc/architecture-design.md#global-rule): Permite ejecutar cualquier plugin para todas las solicitudes, como: limit rate, IP filter etc.
|
||||
- [Modo stand-alone (por su cuenta)](docs/en/latest/stand-alone.md): Soporta cargar reglas de ruta desde un archivo local yaml, siendo más amigable que kubernetes(k8s).
|
||||
- [Regla global](docs/en/latest/architecture-design.md#global-rule): Permite ejecutar cualquier plugin para todas las solicitudes, como: limit rate, IP filter etc.
|
||||
- Alto desempeño: El QPS de un sólo núcleo alcanza 18k con un retraso promedio de menos de 0.2 milisegundos.
|
||||
- [Fault Injection](doc/plugins/fault-injection.md)
|
||||
- [REST Admin API](doc/admin-api.md): Al usar REST Admin API para controlar Apache APISIX, el cual solamente permite acceso 127.0.0.1 por defecto, usted puede modificar el campo `allow_admin` en `conf/config.yaml` para especificar una lista de IPs a los que se les permite llamar el Admin API. Nótese también que el Admin API utiliza autentificación de clave (key auth) para verificar la identidad de quien llama. **El campo `admin_key` en `conf/config.yaml` debe ser modificado antes del despliegue para asegurar la seguridad**.
|
||||
- Loggers (accesos de registro) externos: Exporte accesos de registro para herramientas de control de acceso externo. ([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
|
||||
- [Fault Injection](docs/en/latest/plugins/fault-injection.md)
|
||||
- [REST Admin API](docs/en/latest/admin-api.md): Al usar REST Admin API para controlar Apache APISIX, el cual solamente permite acceso 127.0.0.1 por defecto, usted puede modificar el campo `allow_admin` en `conf/config.yaml` para especificar una lista de IPs a los que se les permite llamar el Admin API. Nótese también que el Admin API utiliza autentificación de clave (key auth) para verificar la identidad de quien llama. **El campo `admin_key` en `conf/config.yaml` debe ser modificado antes del despliegue para asegurar la seguridad**.
|
||||
- Loggers (accesos de registro) externos: Exporte accesos de registro para herramientas de control de acceso externo. ([HTTP Logger](docs/en/latest/plugins/http-logger.md), [TCP Logger](docs/en/latest/plugins/tcp-logger.md), [Kafka Logger](docs/en/latest/plugins/kafka-logger.md), [UDP Logger](docs/en/latest/plugins/udp-logger.md))
|
||||
- [Cartas Helm](https://github.com/apache/apisix-helm-chart)
|
||||
|
||||
- **Altamente escalable**
|
||||
- [Plugins personalizados](doc/plugin-develop.md): Permite engancharse en fases comunes, tales como `rewrite`, `access`, `header filer`, `body filter` y `log`, y también permite engancharse en la etapa `balancer`.
|
||||
- [Plugins personalizados](docs/en/latest/plugin-develop.md): Permite engancharse en fases comunes, tales como `rewrite`, `access`, `header filer`, `body filter` y `log`, y también permite engancharse en la etapa `balancer`.
|
||||
- Carga personalizada de algoritmos de balanceo: Usted puede cargar los algoritmos de balanceo de manera personalizada durante la fase de `balancer`.
|
||||
- Routing personalizado: Soporta que los usuarios implementen algoritmos de enrutamiento por sí mismos.
|
||||
|
||||
@ -148,7 +148,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun
|
||||
Hay varias maneras de instalar la versión publicada Apache de APISIX:
|
||||
|
||||
1. Compilación de código fuente (aplicable a todos los sistemas)
|
||||
- Instalación de dependencias en tiempo de ejecución: OpenResty y etcd, y dependencias de compilación: luarocks. Consultar [install dependencies documentation](doc/install-dependencies.md)
|
||||
- Instalación de dependencias en tiempo de ejecución: OpenResty y etcd, y dependencias de compilación: luarocks. Consultar [install dependencies documentation](docs/en/latest/install-dependencies.md)
|
||||
- Bajar el paquete de publicación más reciente de código fuente:
|
||||
|
||||
```shell
|
||||
@ -186,7 +186,7 @@ Hay varias maneras de instalar la versión publicada Apache de APISIX:
|
||||
La imagen del contenedor Docker no incluye `etcd`, usted puede consultar [docker compose example](https://github.com/apache/apisix-docker/tree/master/example) para iniciar un grupo de ensayos.
|
||||
|
||||
3. Paquete RPM(sólo para CentOS 7)
|
||||
- Instalación de dependencias en tiempo de ejecución: Librerías de desarrollo OpenResty, etcd y OpenSSL, consultar [install dependencies documentation](doc/install-dependencies.md#centos-7)
|
||||
- Instalación de dependencias en tiempo de ejecución: Librerías de desarrollo OpenResty, etcd y OpenSSL, consultar [install dependencies documentation](docs/en/latest/install-dependencies.md#centos-7)
|
||||
- Instalar APISIX:
|
||||
|
||||
```shell
|
||||
@ -229,21 +229,21 @@ Hay varias maneras de instalar la versión publicada Apache de APISIX:
|
||||
|
||||
2. Comenzando
|
||||
|
||||
La Guía para Comenzar es una excelente manera de aprender los fundamentos de APISIX, basta seguir los pasos en [Getting Started](doc/getting-started.md).
|
||||
La Guía para Comenzar es una excelente manera de aprender los fundamentos de APISIX, basta seguir los pasos en [Getting Started](docs/en/latest/getting-started.md).
|
||||
|
||||
Más aún, usted puede seguir la documentación para ensayar más [plugins](doc/README.md#plugins).
|
||||
Más aún, usted puede seguir la documentación para ensayar más [plugins](docs/en/latest/README.md#plugins).
|
||||
|
||||
3. Admin API
|
||||
|
||||
Apache APISIX brinda [REST Admin API](doc/admin-api.md) para controlar de forma dinámica el grupo (cluster) Apache APISIX.
|
||||
Apache APISIX brinda [REST Admin API](docs/en/latest/admin-api.md) para controlar de forma dinámica el grupo (cluster) Apache APISIX.
|
||||
|
||||
4. Desarrollo de Plugin
|
||||
|
||||
Usted puede consultar la guía [plugin development guide](doc/plugin-develop.md), y la documentación e implementación de código [sample plugin `echo`](doc/plugins/echo.md).
|
||||
Usted puede consultar la guía [plugin development guide](docs/en/latest/plugin-develop.md), y la documentación e implementación de código [sample plugin `echo`](docs/en/latest/plugins/echo.md).
|
||||
|
||||
Por favor note que los plugins de Apache APISIX added, updated, deleted, etc. no son cargados sin reiniciar el servicio.
|
||||
|
||||
Para más documentación, por favor visitar [Apache APISIX Document Index](doc/README.md)
|
||||
Para más documentación, por favor visitar [Apache APISIX Document Index](docs/en/latest/README.md)
|
||||
|
||||
## Evaluación comparativa (Benchmark)
|
||||
|
||||
@ -295,7 +295,7 @@ Ensayo de comparación de desempeño [datos detallados](https://gist.github.com/
|
||||
|
||||
### Contribuciones a través del tiempo
|
||||
|
||||
![contributor-over-time](./doc/images/contributor-over-time.png)
|
||||
![contributor-over-time](docs/assets/images/contributor-over-time.png)
|
||||
|
||||
## Videos y Artículos
|
||||
|
||||
@ -319,7 +319,7 @@ Una gran variedad de compañías y organizacioes usan APISIX para investigación
|
||||
|
||||
<img src="https://raw.githubusercontent.com/api7/website-of-API7/master/user-wall.jpg" width="900" height="500">
|
||||
|
||||
Se alienta a los usuarios a sumarse a la página [Powered By](doc/powered-by.md).
|
||||
Se alienta a los usuarios a sumarse a la página [Powered By](docs/en/latest/powered-by.md).
|
||||
|
||||
## Landscape (panorama)
|
||||
|
||||
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 369 KiB After Width: | Height: | Size: 369 KiB |
Before Width: | Height: | Size: 393 KiB After Width: | Height: | Size: 393 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 374 KiB |
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 195 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 221 KiB |
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB |
Before Width: | Height: | Size: 497 KiB After Width: | Height: | Size: 497 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 222 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 318 KiB After Width: | Height: | Size: 318 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 282 KiB After Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 232 KiB |
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 419 KiB After Width: | Height: | Size: 419 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 242 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 271 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
* [Chinese](./zh-cn/README.md)
|
||||
|
||||
## Reference Documentation
|
||||
|
||||
* [APISIX Readme](./README.md)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/architecture-design.md)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [**APISIX**](#apisix)
|
||||
@ -38,11 +36,11 @@
|
||||
|
||||
### Plugin Loading Process
|
||||
|
||||
![flow-load-plugin](./images/flow-load-plugin.png)
|
||||
![flow-load-plugin](../../assets/images/flow-load-plugin.png)
|
||||
|
||||
### Plugin Hierarchy Structure
|
||||
|
||||
<img src="./images/flow-plugin-internal.png" width="50%" height="50%">
|
||||
<img src="../../assets/images/flow-plugin-internal.png" width="50%" height="50%">
|
||||
|
||||
## APISIX Config
|
||||
|
||||
@ -80,7 +78,7 @@ The route mainly consists of three parts: matching rules (e.g uri, host, remote_
|
||||
|
||||
The following image shows an example of some Route rules. When some attribute values are the same, the figure is identified by the same color.
|
||||
|
||||
<img src="./images/routes-example.png" width="50%" height="50%">
|
||||
<img src="../../assets//images/routes-example.png" width="50%" height="50%">
|
||||
|
||||
We configure all the parameters directly in the Route, it's easy to set up, and each Route has a relatively high degree of freedom. But when our Route has more repetitive configurations (such as enabling the same plugin configuration or upstream information), once we need update these same properties, we have to traverse all the Routes and modify them, so it's adding a lot of complexity of management and maintenance.
|
||||
|
||||
@ -120,7 +118,7 @@ For specific options of Route, please refer to [Admin API](admin-api.md#route).
|
||||
|
||||
A `Service` is an abstraction of an API (which can also be understood as a set of Route abstractions). It usually corresponds to the upstream service abstraction. Between `Route` and `Service`, usually the relationship of N:1, please see the following image.
|
||||
|
||||
<img src="./images/service-example.png" width="50%" height="50%">
|
||||
<img src="../../assets/images/service-example.png" width="50%" height="50%">
|
||||
|
||||
Different Route rules are bound to a Service at the same time. These Routes will have the same upstream and plugin configuration, reducing redundant configuration.
|
||||
|
||||
@ -257,7 +255,7 @@ In theory, you can write arbitrary Lua code in `Script`, or you can directly cal
|
||||
|
||||
Upstream is a virtual host abstraction that performs load balancing on a given set of service nodes according to configuration rules. Upstream address information can be directly configured to `Route` (or `Service`). When Upstream has duplicates, you need to use "reference" to avoid duplication.
|
||||
|
||||
<img src="./images/upstream-example.png" width="50%" height="50%">
|
||||
<img src="../../assets/images/upstream-example.png" width="50%" height="50%">
|
||||
|
||||
As shown in the image above, by creating an Upstream object and referencing it by ID in `Route`, you can ensure that only the value of an object is maintained.
|
||||
|
||||
@ -267,7 +265,7 @@ Upstream configuration can be directly bound to the specified `Route` or it can
|
||||
|
||||
In addition to the basic complex equalization algorithm selection, APISIX's Upstream also supports logic for upstream passive health check and retry, see the link below.
|
||||
|
||||
https://github.com/apache/apisix/blob/master/doc/admin-api.md#upstream
|
||||
https://github.com/apache/apisix/blob/master/docs/en/latest/admin-api.md#upstream
|
||||
|
||||
Create an upstream object use case:
|
||||
|
||||
@ -478,7 +476,7 @@ Set the route that best suits your business needs in the local configuration `co
|
||||
|
||||
For the API gateway, it is usually possible to identify a certain type of requester by using a domain name such as a request domain name, a client IP address, etc., and then perform plugin filtering and forward the request to the specified upstream, but sometimes the depth is insufficient.
|
||||
|
||||
<img src="./images/consumer-who.png" width="50%" height="50%">
|
||||
<img src="../../assets/images/consumer-who.png" width="50%" height="50%">
|
||||
|
||||
As shown in the image above, as an API gateway, you should know who the API Consumer is, so you can configure different rules for different API Consumers.
|
||||
|
||||
@ -489,7 +487,7 @@ As shown in the image above, as an API gateway, you should know who the API Cons
|
||||
|
||||
In APISIX, the process of identifying a Consumer is as follows:
|
||||
|
||||
<img src="./images/consumer-internal.png" width="50%" height="50%">
|
||||
<img src="../../assets/images/consumer-internal.png" width="50%" height="50%">
|
||||
|
||||
1. Authorization certification: e.g [key-auth](./plugins/key-auth.md), [JWT](./plugins/jwt-auth.md), etc.
|
||||
2. Get consumer_name: By authorization, you can naturally get the corresponding Consumer `id`, which is the unique identifier of the Consumer object.
|
@ -25,7 +25,7 @@
|
||||
|
||||
This reference architecture walks you through building **APISIX** as a serverless container API Gateway on top of AWS Fargate with AWS CDK.
|
||||
|
||||
![](images/aws-fargate-cdk.png)
|
||||
![](../../assets/images/aws-fargate-cdk.png)
|
||||
|
||||
## Generate an AWS CDK project with `projen`
|
||||
|
||||
@ -206,15 +206,15 @@ Address: 44.226.102.63
|
||||
|
||||
Configure the IP addresses returned as your upstream nodes in your **APISIX** dashboard followed by the **Services** and **Routes** configuration. Let's say we have a `/index.php` as the URI for the first route for our first **Service** from the **Upstream** IP addresses.
|
||||
|
||||
![](images/aws-nlb-ip-addr.png)
|
||||
![](images/aws-define-service.png)
|
||||
![](images/aws-define-route.png)
|
||||
![](../../assets/images/aws-nlb-ip-addr.png)
|
||||
![](../../assets/images/aws-define-service.png)
|
||||
![](../../assets/images/aws-define-route.png)
|
||||
|
||||
## Validation
|
||||
|
||||
OK. Let's test the `/index.php` on `{apiSix.ApiSixServiceServiceURL}/index.php`
|
||||
|
||||
![](images/aws-caddy-php-welcome-page.png)
|
||||
![](../../assets/images/aws-caddy-php-welcome-page.png)
|
||||
|
||||
Now we have been successfully running **APISIX** in AWS Fargate as serverless container API Gateway service.
|
||||
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/benchmark.md)
|
||||
|
||||
### Benchmark Environments
|
||||
|
||||
n1-highcpu-8 (8 vCPUs, 7.2 GB memory) on Google Cloud
|
||||
@ -35,18 +33,18 @@ and the response size was 1KB.
|
||||
|
||||
The x-axis means the size of CPU core, and the y-axis is QPS.
|
||||
|
||||
<img src="./images/benchmark-1.jpg" width="70%" height="70%">
|
||||
<img src="../../assets/images/benchmark-1.jpg" width="70%" height="70%">
|
||||
|
||||
#### Latency
|
||||
|
||||
Note the y-axis latency in **microsecond(μs)** not millisecond.
|
||||
|
||||
<img src="./images/latency-1.jpg" width="70%" height="70%">
|
||||
<img src="../../assets/images/latency-1.jpg" width="70%" height="70%">
|
||||
|
||||
#### Flame Graph
|
||||
|
||||
The result of Flame Graph:
|
||||
![flamegraph-1](../doc/images/flamegraph-1.jpg)
|
||||
![flamegraph-1](../../assets/images/flamegraph-1.jpg)
|
||||
|
||||
And if you want to run the benchmark test in your machine, you should run another Nginx to listen 80 port.
|
||||
|
||||
@ -80,18 +78,18 @@ and the response size was 1KB.
|
||||
|
||||
The x-axis means the size of CPU core, and the y-axis is QPS.
|
||||
|
||||
<img src="./images/benchmark-2.jpg" width="70%" height="70%">
|
||||
<img src="../../assets/images/benchmark-2.jpg" width="70%" height="70%">
|
||||
|
||||
#### Latency
|
||||
|
||||
Note the y-axis latency in **microsecond(μs)** not millisecond.
|
||||
|
||||
<img src="./images/latency-2.jpg" width="70%" height="70%">
|
||||
<img src="../../assets/images/latency-2.jpg" width="70%" height="70%">
|
||||
|
||||
#### Flame Graph
|
||||
|
||||
The result of Flame Graph:
|
||||
![flamegraph-2](./images/flamegraph-2.jpg)
|
||||
![flamegraph-2](../../assets/images/flamegraph-2.jpg)
|
||||
|
||||
And if you want to run the benchmark test in your machine, you should run another Nginx to listen 80 port.
|
||||
|
4
docs/en/latest/config.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"version": 2.3,
|
||||
"sidebar": {}
|
||||
}
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[中文](./zh-cn/customize-nginx-configuration.md)
|
||||
|
||||
# Customize Nginx configuration
|
||||
|
||||
The Nginx configuration used by APISIX is generated via the template file `apisix/ngx_tpl.lua` and the options from `conf/config-default.yaml` / `conf/config.yaml`.
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/debug-function.md)
|
||||
|
||||
## `5xx` response status code
|
||||
|
||||
Similar `5xx` status codes such as 500, 502, 503, etc., are the status codes in response to a server error. When a request has a `5xx` status code; it may come from `APISIX` or `Upstream`. How to identify the source of these response status codes is a very meaningful thing. It can quickly help us determine the problem.
|
@ -16,7 +16,6 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
-->
|
||||
[Chinese](zh-cn/discovery.md)
|
||||
|
||||
# Integration service discovery registry
|
||||
|
||||
@ -37,7 +36,7 @@
|
||||
|
||||
When system traffic changes, the number of servers of the upstream service also increases or decreases, or the server needs to be replaced due to its hardware failure. If the gateway maintains upstream service information through configuration, the maintenance costs in the microservices architecture pattern are unpredictable. Furthermore, due to the untimely update of these information, will also bring a certain impact for the business, and the impact of human error operation can not be ignored. So it is very necessary for the gateway to automatically get the latest list of service instances through the service registry。As shown in the figure below:
|
||||
|
||||
![](./images/discovery.png)
|
||||
![](../../assets/images/discovery.png)
|
||||
|
||||
1. When the service starts, it will report some of its information, such as the service name, IP, port and other information to the registry. The services communicate with the registry using a mechanism such as a heartbeat, and if the registry and the service are unable to communicate for a long time, the instance will be cancel.When the service goes offline, the registry will delete the instance information.
|
||||
2. The gateway gets service instance information from the registry in near-real time.
|
@ -16,7 +16,6 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
-->
|
||||
<!--[Chinese](zh-cn/discovery.md)-->`
|
||||
|
||||
## Summary
|
||||
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/getting-started.md)
|
||||
|
||||
# Quick Start Guide
|
||||
|
||||
The goal of this guide is to get started with APISIX and to configure a secured public API with APISIX.
|
||||
@ -247,7 +245,7 @@ a web application to perform the similar. The dashboard is available in the foll
|
||||
[repository](https://github.com/apache/apisix). The dashboard is intuitive and you can orchestrate the
|
||||
same route configurations via the dashboard as well.
|
||||
|
||||
![Dashboard](images/dashboard.png)
|
||||
![Dashboard](../../assets/images/dashboard.png)
|
||||
|
||||
### Troubleshooting
|
||||
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[中文](zh-cn/grpc-proxy.md)
|
||||
|
||||
# grpc-proxy
|
||||
|
||||
proxying gRPC traffic:
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/https.md)
|
||||
|
||||
### HTTPS
|
||||
|
||||
`APISIX` supports to load multiple SSL certificates by TLS extension Server Name Indication (SNI).
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/mtls.md)
|
||||
|
||||
## Mutual TLS authentication
|
||||
|
||||
### Why use it
|
@ -16,7 +16,6 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
-->
|
||||
[中文](zh-cn/plugin-develop.md)
|
||||
|
||||
# table of contents
|
||||
|
||||
@ -241,7 +240,7 @@ Here is the consumer configuration for key-auth plugin:
|
||||
}
|
||||
```
|
||||
|
||||
It will be used when you try to create a [Consumer](https://github.com/apache/apisix/blob/master/doc/admin-api.md#consumer)
|
||||
It will be used when you try to create a [Consumer](https://github.com/apache/apisix/blob/master/docs/en/latest/admin-api.md#consumer)
|
||||
|
||||
To validate the configuration, the plugin uses a schema like this:
|
||||
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/plugin-interceptors.md)
|
||||
|
||||
## Plugin interceptors
|
||||
|
||||
Some plugins will register API to serve their purposes.
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
[Chinese](zh-cn/plugins.md)
|
||||
|
||||
## Hot reload
|
||||
|
||||
APISIX plugins are hot-loaded. No matter you add, delete or modify plugins, and **update codes of plugins in disk**, you don't need to restart the service.
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/api-breaker.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Name**](#name)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/authz-keycloak.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Name**](#name)
|
||||
@ -185,7 +183,7 @@ docker run -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=123456 -p 8090:8080 sshni
|
||||
|
||||
The following image shows how the policies are configures in the Keycloak server.
|
||||
|
||||
![Keycloak policy design](../images/plugin/authz-keycloak.png)
|
||||
![Keycloak policy design](../../../assets/images/plugin/authz-keycloak.png)
|
||||
|
||||
## Future Development
|
||||
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/basic-auth.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Name**](#name)
|
||||
@ -61,11 +59,11 @@ curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f1
|
||||
|
||||
you can visit Dashboard `http://127.0.0.1:9080/apisix/dashboard/` and add a Consumer through the web console:
|
||||
|
||||
![auth-1](../images/plugin/basic-auth-1.png)
|
||||
![auth-1](../../../assets/images/plugin/basic-auth-1.png)
|
||||
|
||||
then add basic-auth plugin in the Consumer page:
|
||||
|
||||
![auth-2](../images/plugin/basic-auth-2.png)
|
||||
![auth-2](../../../assets/images/plugin/basic-auth-2.png)
|
||||
|
||||
### 2. add a Route or add a Service, and enable the `basic-auth` plugin
|
||||
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/batch-requests.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Description**](#description)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/consumer-restriction.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [Introduction](#introduction)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/cors.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Description**](#description)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/echo.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Name**](#name)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/error-log-logger.md)
|
||||
|
||||
# Summary
|
||||
|
||||
- [**Name**](#name)
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/fault-injection.md)
|
||||
|
||||
## Name
|
||||
|
||||
Fault injection plugin, this plugin can be used with other plugins and will be executed before other plugins. The `abort` attribute will directly return the user-specified http code to the client and terminate the subsequent plugins. The `delay` attribute will delay a request and execute subsequent plugins.
|
@ -17,8 +17,6 @@
|
||||
#
|
||||
-->
|
||||
|
||||
- [中文](../zh-cn/plugins/grpc-transcode.md)
|
||||
|
||||
## Name
|
||||
|
||||
HTTP(s) -> APISIX -> gRPC server
|