有一次看腾讯某个网站的时候看到有个出错的请求里面写了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安装方式
本来我准备选源码安装的,结果在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 &)
直接复制官网的命令就行了
安装仓库(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 shell
sudo manager-api -p /usr/local/apisix/dashboard/
# or run dashboard as a service
systemctl start apisix-dashboard
默认端口9000(这是竞价实例,这个IP是临时的)
vi /usr/local/apisix/dashboard/conf/conf.yaml
第33行下面新增一行,0.0.0.0/0代表所有
然后重启面板
systemctl restart apisix-dashboard
此时就可以访问了(默认账密admin)
修改账号密码也是上面那个配置文件里面
登录后的首页
Protocol Buffers :Google 用于序列化结构化数据的框架直接使用默认配置
然后创建一个路径(路由),这个页面加载的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