Apache APISIX 是 Apache 软件基金会下的顶级项目,由 API7.ai 开发并捐赠。它是一个具有动态、实时、高性能等特点的云原生 API 网关。
你可以使用 APISIX 网关作为所有业务的流量入口,它提供了动态路由、动态上游、动态证书、A/B 测试、灰度发布(金丝雀发布)、蓝绿部署、限速、防攻击、收集指标、监控报警、可观测、服务治理等功能。
安装APISIX
(
请确定本机已经安装了Docker
)
安装 APISIX
APISIX 可以借助 quickstart 脚本快速安装并启动:
curl -sL https://run.api7.ai/apisix/quickstart | sh
该命令启动 apisix-quickstart 和 etcd 两个容器,APISIX 使用 etcd 保存和同步配置。APISIX 和 etcd 容器使用 Docker 的 host 网络模式,因此可以从本地直接访问。
如果一切顺利,将输出如下信息:
✔ APISIX is ready!
安装过程如下:


本机已经安装成功.
验证
你可以通过 curl 来访问正在运行的 APISIX 实例。比如,你可以发送一个简单的 HTTP 请求来验证 APISIX 运行状态是否正常:
curl "http://127.0.0.1:9080" --head | grep Server
如果一切顺利,将输出如下信息:
Server: APISIX/Version
这里的 Version 是指你已经安装的 APISIX 版本,比如 APISIX/3.3.0。
现在,你已经成功安装并运行了 APISIX!
curl "http://127.0.0.1:9080/ip"
你将会得到类似下面的返回:

APISIX 提供内置的 Dashboard UI,可访问 http://127.0.0.1:9180/ui 使用。

Route 是什么
Route(也称之为路由)是访问上游目标的路径,在 Apache APISIX 中,Route 首先通过预定的规则来匹配客户端请求,然后加载和执行相应的插件,最后将请求转发至特定的 Upstream。
在 APISIX 中,一个最简单的 Route 仅由匹配路径和 Upstream 地址两个信息组成。
Upstream 是什么
Upstream(也称之为上游)是一组具备相同功能的节点集合,它是对虚拟主机的抽象。Upstream 可以通过预先配置的规则对多个服务节点进行负载均衡。
创建路由
你可以创建一个路由,将客户端的请求转发至 httpbin.org(这个网站能测试 HTTP 请求和响应的各种信息)。
通过下面的命令,你将创建一个路由,把请求http://127.0.0.1:9080/ip 转发至 httpbin.org/ip:
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
"id": "getting-started-ip",
"uri": "/ip",
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'
如果配置成功,将会返回 HTTP/1.1 201 Created。


启用负载均衡
创建一个具有两个上游服务的路由,访问 /headers 将被转发到 httpbin.org 和 mock.api7.ai 这两个上游服务,并且会返回请求头。
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
"id": "getting-started-headers",
"uri": "/headers",
"upstream" : {
"type": "roundrobin",
"nodes": {
"httpbin.org:443": 1,
"mock.api7.ai:443": 1
},
"pass_host": "node",
"scheme": "https"
}
}'
如果路由创建成功,你将会收到返回 HTTP/1.1 201 Created。
info
- 将
pass_host字段设置为node,将传递请求头给上游。 - 将
scheme字段设置为https,向上游发送请求时将启用 TLS。


APISIX的配置文件是:
apisix-docker-master/example/apisix_conf/config.yaml
查看key:
cat /etc/sca/apisix-docker-master/example/apisix_conf/config.yaml I grep key
密钥验证
API 网关主要作用是连接 API 消费者和提供者。出于安全考虑,在访问内部资源之前,应先对消费者进行身份验证和授权。
APISIX 拥有灵活的插件扩展系统,目前有很多可用于用户身份验证和授权的插件。
Consumer 是什么
Consumer(也称之为消费者)是指使用 API 的应用或开发人员。
在 APISIX 中,消费者需要一个全局唯一的 名称 ,并从上面的列表中选择一个身份验证 插件。
Key Authentication 是什么
Key Authentication(也称之为密钥验证)是一个相对比较简单但是应用广泛的身份验证方法,它的设计思路如下:
- 管理员为路由添加一个身份验证密钥(API 密钥)。
- API 消费者在发送请求时,在查询字符串或者请求头中添加密钥。
创建消费者
创建一个名为 tom 的消费者,并启用 key-auth 插件,密钥设置为 secret-key。所有携带密钥 secret-key 的请求都会被识别为消费者 tom。
caution
生产环境请使用复杂的密钥。
curl -i "http://127.0.0.1:9180/apisix/admin/consumers" -X PUT -d '
{
"username": "tom",
"plugins": {
"key-auth": {
"key": "secret-key"
}
}
}'
如果消费者创建成功,你将得到返回 HTTP/1.1 201 Created。
启用 Authentication
在教程配置路由中,我们已经创建了路由 getting-started-ip,我们通过 PATCH 方法为该路由增加 key-auth 插件:
curl -i "http://127.0.0.1:9180/apisix/admin/routes/getting-started-ip" -X PATCH -d '
{
"plugins": {
"key-auth": {}
}
}'
如果增加插件成功,你将得到返回 HTTP/1.1 201 Created。
禁用 Authentication
将参数设置 _meta.disable 为 true,即可禁用密钥验证插件。
curl "http://127.0.0.1:9180/apisix/admin/routes/getting-started-ip" -X PATCH -d '
{
"plugins": {
"key-auth": {
"_meta": {
"disable": true
}
}
}
}'
APISIX 是一个统一的控制中心,它管理 API 和微服务的进出流量。除了客户端发来的合理的请求,还可能存在网络爬虫产生的不必要的流量,此外,网络攻击(比如 DDos)也可能产生非法请求。
APISIX 提供限速功能,通过限制在规定时间内发送到上游服务的请求数量来保护 APIs 和微服务。请求的计数在内存中完成,具有低延迟和高性能的特点。

在本教程中,你将启用 limit-count 插件来限制传入流量的速率。
启用 Rate Limiting
在教程配置路由中,我们已经创建了路由 getting-started-ip,我们通过 PATCH 方法为该路由增加 limit-count 插件:
curl -i "http://127.0.0.1:9180/apisix/admin/routes/getting-started-ip" -X PATCH -d '
{
"plugins": {
"limit-count": {
"count": 2,
"time_window": 10,
"rejected_code": 503
}
}
}'
如果增加插件成功,你将得到返回 HTTP/1.1 201 Created。上述配置将传入流量的速率限制为每 10 秒最多 2 个请求。
禁用 Rate Limiting
将参数设置 _meta.disable 为 true,即可禁用限速插件。
curl -i "http://127.0.0.1:9180/apisix/admin/routes/getting-started-ip" -X PATCH -d '
{
"plugins": {
"limit-count": {
"_meta": {
"disable": true
}
}
}
}'
别人分享:






