各位读者好呀,一转眼又是一个月过去了,有一段时间没更新文章,结婚的事也终于忙完了,结婚后又算是人生新起点啦,要一如既往努力面对生活!
2025年11月9日英雄联盟S15全球总决赛KT和T1的决赛BO5,双方打满5局之后,T1以3-2的战绩击败KT,拿下世界冠军!Faker完成6冠王的成就!
得知以上的结果,感慨行行出状元,像Faker这样的传奇人物,他的经历鼓励着所有知道他的人们!我知道的Faker他不单是一个有游戏天赋的人,同样也是一个勤奋、谦虚、敬业的人,他对自己所从事职业的热爱与专注感动着别人!这就是他为什么全世界范围内有那么多粉丝,也或许是Faker人格魅力的来源。
Apache APISIX是一个动态、实时、高性能的云原生API网关,基于OpenResty(Nginx + LuaJIT)构建。它提供了丰富的流量管理功能,包括负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等。
最近有用到Apisix,正好也很久没更新文章了,想着边用边学,所以来介绍下Apisix,大家对于Apisix了解多少?
先看看有哪些核心特性?
选择APISIX的情况:
Apache APISIX 是一个动态、实时、高性能的云原生 API 网关。它构建于 NGINX + ngx_lua 的技术基础之上,充分利用了 LuaJIT 所提供的强大性能。
为什么 Apache APISIX 选择 NGINX+Lua 技术栈?感兴趣的读者可以看下这篇文章https://apisix.apache.org/zh/docs/apisix/next/architecture-design/apisix/

软件架构
为什么 Apache APISIX 选择 NGINX+Lua 技术栈?[2]

面向人工智能代理和LLM的AI网关
特性 | Apache APISIX | Ingress NGINX |
|---|---|---|
架构 | 基于OpenResty的动态网关 | 基于NGINX的静态配置网关 |
配置方式 | 动态API配置,热更新 | 静态配置文件,需重载 |
性能 | 单核QPS 18000+ | 单核QPS 15000+ |
协议支持 | HTTP/HTTPS, HTTP/2, gRPC, WebSocket, TCP/UDP, MQTT | HTTP/HTTPS, HTTP/2, gRPC, WebSocket |
插件系统 | 80+ 官方插件,支持多语言开发 | 有限的内置模块,主要通过注解配置 |
学习曲线 | 中等,需要了解插件概念 | 较低,基于熟悉的NGINX |
与传统 Ingress Controller(如 nginx-ingress、traefik)比,APISIX 更侧重 动态路由、插件化、实时配置(etcd)和丰富的网关能力(流量治理、灰度、认证、限流、transform、gRPC、WebSocket 等)。
传统 Ingress Controller (nginx/traefik/etc):主要实现 k8s Ingress 资源的解析与路由,职责较集中(反向代理、简单 auth、负载均衡)。配置方式通常基于 Ingress/Annotations。APISIX:功能完整的 API 网关,支持 Admin API、etcd 后端、丰富插件、动态路由、服务发现、灰度、流量分发、gRPC、WebSocket、RPC 转换等。既能做 Ingress,也能作为独立网关使用。了解以上背景之后,开始使用Apisix,安装apisix的方式有很多,有以下方式
我这里主要介绍Helm方式,这个比较方便一点(其他方式大家都可以尝试)
helm repo add apisix https://charts.apiseven.com
helm repo update
helm upgrade --install apisix apisix/apisix \
--namespace apisix --create-namespace \
-f values.yaml也可以一行命令快速启动
helm repo add apisix https://add apisix https://charts.apiseven.com && helm repo update && helm upgrade --install apisix apisix/apisix --create-namespace --namespace apisix 安装成功后,APISIX 网关、Dashboard、etcd(如果启用)等组件都已经在集群里运行。
kubectl get pods -n apisix如果在集群外访问,查看服务地址
kubectl get svc apisix-gateway -n apisix会看到类似:
PORT(S): 80:31522/TCP, 443:30768/TCP这样就可以通过 http://<NodeIP>:31522 访问 APISIX 网关了。
Helm 安装时默认启用内嵌 Dashboard,如需修改,需要编辑value.yaml文件
deployment:
admin:
# 启用内嵌 APISIX Dashboard
enable_admin_ui: true可以查看服务:
kubectl get svc -n apisix修改为 NodePort 以便外部访问:
kubectl edit svc apisix-dashboard -n apisix查看端口:
kubectl get svc apisix-dashboard -n apisix比如:
80:30919/TCP那你就可以访问:
http://<任意NodeIP>:30919Apache APISIX 支持设置 Admin API 的 IP 访问白名单,防止 Apache APISIX 被非法访问和攻击
deployment:
admin:
# http://nginx.org/en/docs/http/ngx_http_access_module.html#allow
allow_admin:
- 127.0.0.0/24example-upstreamhttp://httpbin.org 或你自己的服务/getexample-upstream然后访问:
http://<NodeIP>:31522/get能看到返回的上游内容(比如 httpbin 的 JSON)
简单路由示例
# 创建一个简单的路由
curl http://localhost:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \
-X PUT -d '
{
"uri": "/hello",
"methods": ["GET"],
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'测试路由
# 获取APISIX网关地址
kubectl get svc -n apisix apisix-gateway
# 测试路由(假设使用NodePort 30080)
curl http://<node-ip>:30080/helloApache APISIX 支持多种部署模式,每种模式适用于不同的场景和需求[3]

传统模式是 APISIX 最基础的部署方式,包含以下组件:APISIX Gateway、etcd、APISIX Dashboard
优点:
缺点:
适用场景:
独立模式不依赖 etcd,配置通过本地文件管理
优点:
缺点:
适用场景:
数据平面模式将控制平面和数据平面分离
优点:
缺点:
适用场景:
路由是APISIX中最基本的概念,定义了请求如何匹配和转发
{
"uri": "/api/v1/*",
"methods": ["GET", "POST"],
"upstream": {
"type": "roundrobin",
"nodes": {
"backend1.example.com:80": 1,
"backend2.example.com:80": 1
}
}
}服务是路由的抽象,可以被多个路由引用,便于管理相同的上游服务
{
"upstream": {
"type": "roundrobin",
"nodes": {
"backend.example.com:80": 1
}
},
"plugins": {
"limit-req": {
"rate": 5,
"burst": 10
}
}
}上游定义了后端服务的负载均衡配置和健康检查
{
"type": "roundrobin",
"nodes": {
"backend1.example.com:80": 1,
"backend2.example.com:80": 2
},
"checks": {
"active": {
"http_path": "/health",
"healthy": {
"interval": 2,
"successes": 1
}
}
}
}消费者是API的调用方,用于身份认证和授权。
{
"username": "user123",
"plugins": {
"key-auth": {
"key": "auth-key-123"
},
"limit-req": {
"rate": 10,
"burst": 20
}
}
}插件提供了各种功能扩展,可以在不同级别应用:
插件配置允许复用插件配置,减少重复配置。
{
"plugins": {
"limit-req": {
"rate": 5,
"burst": 10
},
"prometheus": {
"prefer_name": true
}
}
}组件 | 默认端口 | 用途 |
|---|---|---|
APISIX Gateway | 80 / 443 / 9080 | 外部访问入口 |
Admin API | 9180 | 管理接口(Dashboard 通过它操作) |
Dashboard | 80 | Web UI |
etcd | 2379 | 配置存储 |
认证插件:
key-auth: API Key 认证jwt-auth: JWT 令牌认证oauth: OAuth2 认证ldap-auth: LDAP 认证安全插件:
cors: 跨域资源共享ip-restriction: IP 访问控制ua-restriction: User-Agent 限制referer-restriction: Referer 限制流量控制插件:
limit-req: 请求限流limit-conn: 连接限流limit-count: 计数限流可观测性插件:
prometheus: 指标收集zipkin: 链路追踪skywalking: APM 集成file-logger: 文件日志apisix-admin 服务给公网以上先介绍这些,当然最终的选择取决于你的工作环境、团队协作需求以及个人偏好。
安装使用只是第一步,通过工具的学习使用,让他人受益才能发挥工具的价值!
[1] : https://apisix.apache.org/zh/docs/apisix/benchmark/
[2] 为什么 Apache APISIX 选择 NGINX+Lua 技术栈?: https://apisix.apache.org/zh/docs/apisix/next/architecture-design/apisix/
[3] : https://apisix.apache.org/docs/apisix/deployment-modes/