apisix
channel at Apache Slack. If the link is not working, find the latest one at Apache INFRA WIKI.Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.
APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.
You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.
The technical architecture of Apache APISIX:
You can use Apache APISIX as a traffic entrance to process all business data, including dynamic routing, dynamic upstream, dynamic certificates, A/B testing, canary release, blue-green deployment, limit rate, defense against malicious attacks, metrics, monitoring alarms, service observability, service governance, etc.
All platforms
Multi protocols
client_id
, both support MQTT 3.1.*, 5.0.Full dynamic
host
, uri
, schema
, enable_websocket
, headers
of the request before send to upstream.Fine-grained routing
cookie
, args
, etc. as routing conditions to implement canary release, A/B testing, etc.{"arg_age", ">", 24}
Security
OPS friendly
Consul
and Nacos
DNS discovery mode, and Eurekaallow_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.Highly scalable
rewrite
, access
, header filer
, body filter
and log
, also allows to hook the balancer
stage.balancer
phase.APISIX Installed and tested in the following systems:
CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, ARM64 Ubuntu 18.04
There are several ways to install the Apache Release version of APISIX:
Source code compilation (applicable to all systems)
wget http://www.apache.org/dist/apisix/1.5/apache-apisix-1.5-src.tar.gz tar zxvf apache-apisix-1.5-src.tar.gz
cd apache-apisix-1.5 make deps
./bin/apisix version
./bin/apisix start
Docker image (applicable to all systems)
By default, the latest Apache release package will be pulled:
docker pull apache/apisix
The Docker image does not include etcd
, you can refer to docker compose example to start a test cluster.
RPM package(only for CentOS 7)
sudo yum install -y https://github.com/apache/apisix/releases/download/1.5/apisix-1.5-0.el7.noarch.rpm
apisix version
apisix start
Note: Apache APISIX would not support the v2 protocol of etcd anymore since APISIX v2.0, so you need to enable v3 protocol when starting etcd, if etcd version is below v3.4.
export ETCDCTL_API=3
For developers, you can use the latest master branch to experience more features
git clone git@github.com:apache/apisix.git cd apisix make deps
git clone https://github.com/apache/apisix-docker.git cd apisix-docker sudo docker build -f alpine-dev/Dockerfile .
Getting start
The getting started guide is a great way to learn the basics of APISIX, just follow the steps in Getting Started.
Further, you can follow the documentation to try more plugins.
Admin API
Apache APISIX provides REST Admin API to dynamic control the Apache APISIX cluster.
Plugin development
You can refer to plugin development guide, and sample plugin echo
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
APISIX has built-in support for Dashboard, which could be directly deployed by docker compose.
The dashboard only allows 127.0.0.1 by default, and you can modify allow_admin
in conf/config.yaml
by yourself, to list the list of IPs allowed to access.
Using AWS‘s 8 core server, APISIX’s QPS reach to 140,000 with a latency of only 0.2 ms.
benckmark script, test method and process has been open source, welcome to try and contribute.
Document Indexing for Apache APISIX
Features | Apache APISIX | KONG |
---|---|---|
Dynamic upstream | Yes | Yes |
Dynamic router | Yes | Yes |
Health check | Yes | Yes |
Dynamic SSL | Yes | Yes |
L4 and L7 proxy | Yes | Yes |
Opentracing | Yes | Yes |
Custom plugin | Yes | Yes |
REST API | Yes | Yes |
CLI | Yes | Yes |
Features | Apache APISIX | Kong |
---|---|---|
Belongs to | Apache Software Foundation | Kong Inc. |
Tech Architecture | Nginx + etcd | Nginx + postgres |
Communication channels | Mail list, Wechat group, QQ group, Github, meetup | Github, freenode, forum |
Single-core CPU, QPS(enable limit-count and prometheus plugins) | 18000 | 1700 |
Latency | 0.2 ms | 2 ms |
Dubbo | Yes | No |
Configuration rollback | Yes | No |
Route with TTL | Yes | No |
Plug-in hot loading | Yes | No |
Custom LB and route | Yes | No |
REST API <--> gRPC transcoding | Yes | No |
Tengine | Yes | No |
MQTT | Yes | No |
Configuration effective time | Event driven, < 1ms | polling, 5 seconds |
Dashboard | Yes | No |
IdP | Yes | No |
Configuration Center HA | Yes | No |
Speed limit for a specified time window | Yes | No |
Support any Nginx variable as routing condition | Yes | No |
Benchmark comparison test details data
A wide variety of companies and organizations use APISIX for research, production and commercial product, including:
Users are encouraged to add themselves to the Powered By page.
See CONTRIBUTING for details on submitting patches and the contribution workflow.
Inspired by Kong and Orange.