Apisix#
Install#
docker install#
docker run -d --restart unless-stopped \
--network ${DOCKER_NETWORK} \
--name ${DOCKER_APISIX_NAME} \
-p 9080:9080/tcp \
-p 9091:9091/tcp \
-p 9092:9092/tcp \
-p 9180:9180/tcp \
-p 9443:9443/tcp \
-e APISIX_STAND_ALONE=true \
-v ${PWD}/apisix/apisix.yaml:/usr/local/apisix/conf/apisix.yaml:ro \
apache/apisix:${APISIX_VERSION}
References#
Usage#
Route#
# create upstream
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" -X PUT -d '
{
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}'
# create route
curl "http://127.0.0.1:9180/apisix/admin/routes/1" -X PUT -d '
{
"methods": ["GET"],
"host": "example.com",
"uri": "/anything/*",
"upstream_id": "1"
}'
# route with rate limit
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key_type": "var",
"key": "remote_addr"
}
},
"upstream_id": "1"
}'
Consumer#
# consumer with rate limit
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username":"consumer1",
"plugins":{
"key-auth":{
"key":"auth-one"
},
"limit-count":{
"count":2,
"time_window":60,
"rejected_code":403,
"rejected_msg":"Requests are too many, please try again later or upgrade your subscription plan.",
"key":"remote_addr"
}
}
}'
# consumer with key auth
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "jack",
"plugins": {
"key-auth": {
"key": "auth-one"
}
}
}'