ApiSix能达到的功能效果

时间:2022-11-07 08:58:07


页面中的功能

参考:​​全新一代API网关,带可视化管理,文档贼友好!​​​ 官方参考文档:​​GET START​​ 首先需要明白,API网关是以端口转发的方式进行处理,也就是说,APISIX监听到的端口会作为端口的统一入口,然后在中间做处理、代理和转发。

根据这个前提认识,我们再来谈谈APISIX的使用。
![image.png](https://img-blog.csdnimg.cn/img_convert/7c29602f28a4f3eec1ce65d6944d6b1c.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=388&id=u4987b051&margin=[object Object]&name=image.png&originHeight=388&originWidth=261&originalType=binary&ratio=1&rotation=0&showTitle=false&size=9763&status=done&style=none&taskId=ubc81d286-254f-456a-98c3-6df3f372593&title=&width=261)

上游

上游代表实体应用,配置项包含目标节点的主机名和端口。
上游的配置从面向对象的角度来说,可以想象成,定义的实体对象。
![image.png](https://img-blog.csdnimg.cn/img_convert/dde1f977003f4b7203e517579d8e30f7.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=1107&id=uc526b7e4&margin=[object Object]&name=image.png&originHeight=1107&originWidth=1982&originalType=binary&ratio=1&rotation=0&showTitle=false&size=76420&status=done&style=none&taskId=uf24f8bc5-d0d0-42a3-8322-4cc6f3f0fee&title=&width=1982)
例如,我这里定义了一个8081端口上的应用。

路由

路由里面配置的,就是针对对网关的某个路由的访问,它有什么样的行为。例如,我配置了一个对上述应用的转发,并且配置了一个插件,用来控制单位时间的访问速度。

设置路由信息

![image.png](https://img-blog.csdnimg.cn/img_convert/0f9b3f68b8ad72d836af62932160cec2.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=929&id=u6ea2caad&margin=[object Object]&name=image.png&originHeight=929&originWidth=1308&originalType=binary&ratio=1&rotation=0&showTitle=false&size=53679&status=done&style=none&taskId=ud325ac50-a77b-4c2c-bf0c-84c9f41ab7d&title=&width=1308)

设置上游服务

![image.png](https://img-blog.csdnimg.cn/img_convert/0dd9936b392dc51213e6ea280561610e.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=810&id=u3b7bb4e4&margin=[object Object]&name=image.png&originHeight=810&originWidth=1636&originalType=binary&ratio=1&rotation=0&showTitle=false&size=57329&status=done&style=none&taskId=u3fcdc0a4-3467-4ce5-84d1-63d5b0e805f&title=&width=1636)

插件配置

![image.png](https://img-blog.csdnimg.cn/img_convert/3968d794dde1e649dff93eb2d24d4bf0.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=1085&id=u1fba1bb5&margin=[object Object]&name=image.png&originHeight=1085&originWidth=1987&originalType=binary&ratio=1&rotation=0&showTitle=false&size=121135&status=done&style=none&taskId=u0150f062-f7d4-4bd7-ac72-877d00c6cef&title=&width=1987)
点击提交,就生效了。
效果就是,当我在60s内访问超过5次,就会被拦截并返回503。
![image.png](https://img-blog.csdnimg.cn/img_convert/c55efe4984ce63c469cd72b59733f2ca.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=129&id=ue8d94be2&margin=[object Object]&name=image.png&originHeight=129&originWidth=508&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10200&status=done&style=none&taskId=ud0a41018-fb80-4d38-abf4-f6b20f43f13&title=&width=508)
![image.png](https://img-blog.csdnimg.cn/img_convert/b7b42fdfe308ab719abce827a921c62e.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=223&id=u83409fe9&margin=[object Object]&name=image.png&originHeight=223&originWidth=1836&originalType=binary&ratio=1&rotation=0&showTitle=false&size=29075&status=done&style=none&taskId=ua205ac9f-5361-4945-b3de-c0d1c2236a8&title=&width=1836)

服务

服务由路由中公共的插件配置、上游目标信息组合而成。服务与路由、上游关联,一个服务可对应一组上游节点、可被多条路由绑定。

我的理解是相当于是路由的集合,因为某几个路由可能组成了一个功能,而这里的服务就是指的这样一个功能。

消费者

消费者是路由的消费方,形式包括开发者、最终用户、API 调用等。创建消费者时,需绑定至少一个认证类插件。
创建一个使用jwt-auth的消费者。
![image.png](https://img-blog.csdnimg.cn/img_convert/0b215615d07a2d38842afc740127699c.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=720&id=ue83b3384&margin=[object Object]&name=image.png&originHeight=720&originWidth=2054&originalType=binary&ratio=1&rotation=0&showTitle=false&size=90705&status=done&style=none&taskId=uab044bc5-2982-4f7a-bf60-f06ced3835a&title=&width=2054)
再次创建一个路由,不管前面两项怎么处理,只需要在选择插件的时候打开jwt-auth即可,因为全局配置了,所以这里不需要再配置。
直接访问配置的路由(我配置的是/auth/*)
![image.png](https://img-blog.csdnimg.cn/img_convert/1421297ae6afcbb9cf84a821c4ed6082.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=200&id=u8ee65e07&margin=[object Object]&name=image.png&originHeight=200&originWidth=1179&originalType=binary&ratio=1&rotation=0&showTitle=false&size=20865&status=done&style=none&taskId=u36f1af3a-338e-4744-8f82-08802d13a2e&title=&width=1179)
现在我们需要去找jwt token,访问

curl http://127.0.0.1:9080/apisix/plugin/jwt/sign?key=user-key -i

获取到的值为
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTY0NTIwMDczOH0.i3hJwQ1m9rpDAFT9P4MxKwq3A4H_3EAfi5gaAICRr6o

带*问
![image.png](https://img-blog.csdnimg.cn/img_convert/391c5ec249c12ecf8eb2e4dfc760f3ee.png#clientId=u87d8f6b6-4fa9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=424&id=ua4975c37&margin=[object Object]&name=image.png&originHeight=424&originWidth=1134&originalType=binary&ratio=1&rotation=0&showTitle=false&size=46292&status=done&style=none&taskId=ua9d49a19-66f4-4a16-bfda-18a1740e523&title=&width=1134)
虽然结果是404,但是至少是过去了的。

因为目前还没有深入使用,所以个人觉得消费者似乎是一种全局配置,专门用于认证相关的。而这个消费者这个词儿的定义似乎是对接口来说的,就是接口的消费者,所以要对接口的消费者进行鉴权处理。