Apache APISIX--全生命周期 API 管理
2023-8-6 01:30:5 Author: 墨雪飘影(查看原文) 阅读量:39 收藏

有一次看腾讯某个网站的时候看到有个出错的请求里面写了Powered by APISIX.,就去查了一下这个东西,发现这个东西挺好用,然后就看了看。
Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
上面是官网(https://apisix.apache.org/zh/)的介绍,APISIX基于OpenResty和etcd开发,而OpenResty又是基于nginx和lua的,我个人认为apisix就是OpenResty带插件的版本,而且有GUI可以直接操作。
在线体验:https://apisix-dashboard.apiseven.com/user/login/
下面是是apisix安装教程与部分功能使用记录:
官网提供了以下五种安装方式

APISIX安装方式

本来我准备选源码安装的,结果在GitHub上,服务器拉不动,我又不想配***,想着Docker快,结果这个镜像也在GitHub上,最后选了RPM方式安装。
不过在此之前需要安装etcd,etcd也在GitHub,真是麻了,我在本地先下载了etcd然后传到服务器上。

用xshell直接拖进去(需要安装yum install -y lrzsz

然后对着官网操作

复制后面解压运行的部分就行了

解压(tar -xvf etcd-v3.5.4-linux-amd64.tar.gz)

进入目录,复制执行文件(sudocp -a etcd etcdctl /usr/bin/

运行(nohup etcd >/tmp/etcd.log 2>&1 &

下面安装APISIX

直接复制官网的命令就行了

安装仓库(sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm)

安装apisix,全程y(sudo yum install apisix)

然后就安装好了,下面初始化。

apisix init

然后启动

apisix start

下面安装控制面板:Apache APISIX Dashboard 
https://apisix.apache.org/zh/docs/dashboard/install/

Docker

RPM

我选的RPM,这个RPM在GitHub,下载到本地,拖进去,本地装就行了。

直接本地安装(yum localinstall -y apisix-dashboard-3.0.1-0.el7.x86_64.rpm)

然后对着官网命令启动就行了
# run dashboard in the shellsudo manager-api -p /usr/local/apisix/dashboard/
# or run dashboard as a servicesystemctl start apisix-dashboard
任选一个,启动就行了。
此时无法通过web访问,这个默认是监听本地的。

默认端口9000(这是竞价实例,这个IP是临时的)

提示不在IP不允许访问,此时需要修改配置文件。

vi /usr/local/apisix/dashboard/conf/conf.yaml

第33行下面新增一行,0.0.0.0/0代表所有

然后重启面板

systemctl restart apisix-dashboard

此时就可以访问了(默认账密admin)

修改账号密码也是上面那个配置文件里面

登录后的首页

路由:要配置的访问路径
上游:后端服务器
服务:可以理解为一组路由
消费者:比如配置了身份认证,这里就是账号密码
Protocol Buffers :Google 用于序列化结构化数据的框架
插件:顾名思义,就是一些写好的内置脚本
证书:SSL证书
下面我配置一个需要用户认证的接口
首先配置一个后端服务器(创建上游)

直接使用默认配置

然后创建一个路径(路由),这个页面加载的js文件很大,加载很慢。

这里简单配置了一下,域名其实就是获取来源hostname,路径就是正常的请求路径,后面的路径改写是改写APISIX请求后端服务器的路径,我这里后端服务器会验证hostname,所以还要改写域名。

上游直接选我们新建好的,然后插件选basic-auth

直接启用就好了,一会儿再去配账号密码

先保存,然后验证一下。

弹出401认证,说明配置正确了(默认apisix端口9080)

然后我们配置账号密码(消费者)

这里的名字不能是中文,而且新建后不能改

插件同样选basic-auth

配置账号密码,启用并提交

创建完毕

成功获取

上面是一个简单的身份认证功能,后端不需要任何操作,仅靠apisix实现,同样的apisix还可以做流控。

配置频率限制,这里是2次/s就会被拒绝,返回默认页面,计数依据为IP地址,文档:
https://apisix.apache.org/zh/docs/apisix/plugins/limit-req/
然后我们疯狂刷新来验证一下。

疯狂刷新,直接503,报错

我们还可以将这个信息改写

配置rejected_msg即可

返回一个JSON格式的信息,好看多了有没有

APISIX插件分类

APISIX插件很多,大体分为六个部分,总体来说用起来很方便,修改路由配置不需要重启服务,支持API配置,一般也是使用API进行配置的。

文章来源: http://mp.weixin.qq.com/s?__biz=MzI3NzI4OTkyNw==&mid=2247488929&idx=1&sn=234d60481900b14ccc7be2f65997e810&chksm=eb69db09dc1e521f113b7517a05fd24b952b88eea39e0e8d7b3794899a394e7b11509f7cec28&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh