APISIX
https://mp.weixin.qq.com/s/a9vXEQihClfIGxz75knrYQ
https://mp.weixin.qq.com/s/Zyyhadg04TPdU10ET5JkJw
https://mp.weixin.qq.com/s/MzCdBZkjTeD7Gc8GGMjXsA
https://mp.weixin.qq.com/s/e1GpNChkz_NXMphPfkSnuw
1、官网:https://apisix.apache.org/zh/docs/apisix/getting-started
2、 对同一个上游,如果想添加多个插件,需要将这些插件在一个路由中设置,不可分散在多个路由,否则有的插件会不起作用
3、在插件那里选不到proxy-rewrite,但可以在这里设置,这里就是proxy-rewrite
1、key-auth: curl -i -X GET "http://172.20.5.17:9080/tst02" -H "Host: zcy.com.cn" 2、jwt-auth: =========== 1)获取token curl http://172.20.5.17:9080/apisix/plugin/jwt/sign?key=user-key -i 2)调用 curl -i -X GET "http://172.20.5.17:9080/tst01" -H "Host: zcy.com.cn" -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzA2NTE2NDgsImtleSI6InVzZXIta2V5In0.Azz8goZRovJgoBt-8XxCmKCjkoMRKVcqy2MpaIvnqDg' 放到cookie中也行 curl -i -X GET "http://172.20.5.17:9080/tst01" -H "Host: zcy.com.cn" --cookie jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzA2NTE2NDgsImtleSI6InVzZXIta2V5In0.Azz8goZRovJgoBt-8XxCmKCjkoMRKVcqy2MpaIvnqDg ======== 1)获取token curl -G --data-urlencode 'payload={"uid":10000,"uname":"test"}' http://172.20.5.17:9080/apisix/plugin/jwt/sign?key=user-key -i 返回的结果如下: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEwMDAwLCJrZXkiOiJ1c2VyLWtleSIsInVuYW1lIjoidGVzdCIsImV4cCI6MTYzMDY1MjA4NX0.G_enWasflwHgIZsnELvWIVBxpBNzJwo0V4X6azinBZA 3、///////// redirect curl http://127.0.0.1:9080/apisix/admin/routes/101 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/test/index.html", "host": "zcy.com.cn", "plugins": { "redirect": { "uri": "/test/default.html", "ret_code": 301 } }, "upstream": { "type": "roundrobin", "nodes": { "172.20.5.17:5000": 1 } } }' curl -i http://127.0.0.1:9080/test/index.html ======== curl http://172.20.5.17:9080/apisix/admin/routes/102 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/test/haha.html", "host": "zcy.com.cn", "plugins": { "redirect": { "uri": "/test/yaya.html", "ret_code": 301 } }, "upstream": { "type": "roundrobin", "nodes": { "172.20.5.17:5000": 1 } } }' curl -i -X GET "http://172.20.5.17:9080/test/haha.html" -H "Host: zcy.com.cn" =============== redirect 和 proxy-rewrite 的区别是啥 ? curl -i -X GET "http://172.20.5.17:9080/api/tst02" -H "Host: yhb.com.cn" 4、////////////// 对同一个上游,如果想添加多个插件,需要将这些插件在一个路由中设置,不可分散在多个路由,否则有的插件会不起作用 5、///////// limit-req curl http://127.0.0.1:9080/apisix/admin/routes/104 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "methods": ["GET"], "uris": [ "/*" ], "host": "aaa.com.cn", "plugins": { "limit-req": { "rate": 1, "burst": 0, "rejected_code": 503, "key": "remote_addr", "rejected_msg": "aoh, too many, tmd!!!" } }, "upstream": { "type": "roundrobin", "nodes": { "172.20.5.17:5000": 1 } } }'
rejected_msg 不起作用,不知是不是apisix的bug
6、///////////////// traffic-split
通过upstream_id 设置上游不管用,通过upstream 定义是管用的 "
"plugins": {
"traffic-split": {
"disable": false,
"rules": [{
"weighted_upstreams": [{
"upstream": {
"name": "upstream_A",
"nodes": {
"172.20.5.17:5001": 1
},
"timeout": {
"connect": 15,
"read": 15,
"send": 15
},
"type": "roundrobin"
},
"weight": 3
},
{
"weight": 1
}
]
}]
}
},
重复的缺点在 APISIX 中独立抽象了 Service 和 Upstream 两个概念来解决
Plugin 配置可直接绑定在 Route 上,也可以被绑定在 Service 或 Consumer上。而对于同一 个插件的配置,只能有一份是有效的,配置选择优先级总是 Consumer > Route > Service。
在 conf/config.yaml 中,可以声明本地 APISIX 节点都支持哪些插件。这是个白名单机制,不在该 白名单的插件配置,都将会被自动忽略。这个特性可用于临时关闭或打开特定插件,应对突发情况非常有效
如果你已经在路由规则里配置了某个插件(比如在 route 的 plugins 字段里面添加了它),然后 禁用了该插件,在执行路由规则的时候会跳过这个插件
并不是所有插件都有具体配置项,比如 prometheus 下是没有任何具体配置项,这时候用一个空的对象 标识即可
Script 与 Plugin 互斥,且优先执行 Script ,这意味着配置 Script 后,Route 上配置的 Plugin 将不被执行
不同 Route 规则同时绑定到一个 Service 上,这些 Route 将具有相同的上游和插件配置,减少冗余配置。
默认情况下 Admin API 将监听 9080 端口(HTTPS 的 9443 端口)。您可以通过修改 conf/config.yaml 文件来改变默认监听的端口。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2018-08-31 docker管理工具protainer