Apache APISIX 体验指南

APISIX 体验指南

所有的 sh 脚本通过 git bash 执行。

出现错误仔细核对文档。

github 地址:

使用 docker 安装 apisix

确保本地安装 Docker 和 Docker-compose 如未安装参开以下文档安装:

Docker:https://docs.docker.com/engine/install/centos/

Docker-Compose:https://docs.docker.com/compose/install/

Clone 并修改配置连接到服务器(区别本地),新建 apisix-3.7 目录

shell 复制代码
mkdir apisix-3.7 && cd apisix-3.7
git init
git clone https://github.com/yuluo-yx/apisix-deploy

配置修改

这里的配置必须要修改,确保服务安全

Dashboard
shell 复制代码
cd /example/dashboard/
vim conf.yaml

# 修改如下配置

 35   expire_time: 3600     # jwt token expire time, in second
 36   users:                # yamllint enable rule:comments-indentation
 37     - username: admin   # username and password for login `manager api`
 38       password: deamgodeamgo@666

 **用户名和密码需要修改,密码使用强类型密码**
Apisix-server
shell 复制代码
# 修改 apisix admin api 的验证 key

 32     admin_key:
 33       - name: "admin"
 34         key: 054f7cf07e344346cd3f287985e76a21
 35         role: admin                 # admin: manage all configuration data
 36 

 **必须修改,用于 curl 下发配置时使用**
启动

启动之前,先确定 linux 系统架构,执行以下命令,选择不同的版本执行! dpkg --print-architecture

shell 复制代码
# 运行启动脚本(以 amd 架构为例启动)
./start.sh

# 关闭
./stop.sh

# 测试服务是否启动成功, test.sh 中的 key 需要修改为 apisix-server 中配置的 key!
./test.sh

# 出现以下结果部署成功
{"value":{"pass_host":"pass","nodes":{"httpbin.org:80":1},"update_time":1701241286,"scheme":"http","create_time":1701241286,"hash_on":"vars","id":"1","type":"roundrobin"},"key":"/apisix/upstreams/1"}
访问测试
  • 服务器开放 9000 端口,本地机器访问 http://ip:9000 输入在 dashboard 中配置的用户名和密码访问控制面板!

  • 如果是本地,浏览器访问:http://127.0.0.1:9000 即可查看 dashboard 页面。

运行 api 服务

打开 IDEA,运行 spring boot 项目之后,进入 postman 中打开 api 原生 文件夹访问接口进行测试!

apisix 发布接口

shell 复制代码
$ cat publish-router.sh
curl "http://127.0.0.1:9180/apisix/admin/routes/1" -H "X-API-KEY: 054f7cf07e344346cd3f287985e76a21" -X PUT -d '{"methods": ["GET"],"uri": "/api/test","upstream": {"type": "roundrobin","nodes": {"127.0.0.1:8080": 1}}}'

# 发布成功如下所示
$ sh publish-router.sh
{"key":"/apisix/routes/1","value":{"methods":["GET"],"upstream":{"type":"roundrobin","pass_host":"pass","nodes":{"127.0.0.1:8080":1},"hash_on":"vars","scheme":"http"},"id":"1","uri":"/api/test","update_time":1701359555,"priority":0,"status":1,"create_time":1701359555}}

noded 的 ip 必须是 192 开头,127 会报 502

etcd 的地址必须配置为 ip 地址,127 会报 502

测试

postman 请求 apisix-test apisix-user-getone 接口进行测试!

apisix 保护接口

给 test 接口加上 限流插件 防护

规则:时间窗口为 60 s,在 60 s 之内只能被访问两次,超过直接返回 503 错误码。

shell 复制代码
$ cat protected-test.sh
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: 054f7cf07e344346cd3f287985e76a21' -X PUT -d '{"uri": "/api/test","plugins": {"limit-count": {"count": 2, "time_window": 60,"rejected_code": 503,"key_type": "var","key": "remote_addr"}},"upstream": {"type": "roundrobin","nodes": {"192.168.2.27:8080": 1}}}'

$ sh protected-test.sh
{"key":"/apisix/routes/1","value":{"plugins":{"limit-count":{"key_type":"var","count":2,"allow_degradation":false,"show_limit_quota_header":true,"time_window":60,"rejected_code":503,"key":"remote_addr","policy":"local"}},"update_time":1701395836,"uri":"/api/test","create_time":1701359555,"upstream":{"pass_host":"pass","nodes":{"192.168.2.27:8080":1},"hash_on":"vars","scheme":"http","type":"roundrobin"},"priority":0,"id":"1","status":1}}

访问 postman 保护 test 进行测试。

运行前端服务

本地运行

shell 复制代码
cd /app/front/apisix-test-front
yarn
yarn dev --host

nginx 部署前端

shell 复制代码
cd /app/front/docker
docker-compose up

apisix 发布前端路由

本地运行路由发布

shell 复制代码
curl "http://127.0.0.1:9180/apisix/admin/routes/1" -H "X-API-KEY: 054f7cf07e344346cd3f287985e76a21" -X PUT -d '{"methods": ["GET"],"uri": "/*","upstream": {"type": "roundrobin","nodes": {"192.168.2.27:5173": 1}}}'

$ sh publish-front-router.sh
{"key":"/apisix/routes/1","value":{"priority":0,"update_time":1701397737,"uri":"/*","status":1,"create_time":1701359555,"upstream":{"pass_host":"pass","nodes":{"192.168.2.27:5173":1},"hash_on":"vars","scheme":"http","type":"roundrobin"},"id":"1","methods":["GET"]}}

nginx 路由发布

shell 复制代码
curl "http://127.0.0.1:9180/apisix/admin/routes/1" -H "X-API-KEY: 054f7cf07e344346cd3f287985e76a21" -X PUT -d '{"methods": ["GET"],"uri": "/*","upstream": {"type": "roundrobin","nodes": {"192.168.2.27": 1}}}'

$ sh publish-front-router.sh
{"key":"/apisix/routes/1","value":{"priority":0,"update_time":1701397737,"uri":"/*","status":1,"create_time":1701359555,"upstream":{"pass_host":"pass","nodes":{"192.168.2.27":1},"hash_on":"vars","scheme":"http","type":"roundrobin"},"id":"1","methods":["GET"]}}

请求测试

相关推荐
是Dream呀3 天前
时序数据库选型指南:Apache IoTDB企业级解决方案深度解析
apache·时序数据库·iotdb
一个天蝎座 白勺 程序猿3 天前
Apache IoTDB(5):深度解析时序数据库 IoTDB 在 AINode 模式单机和集群的部署与实践
数据库·apache·时序数据库·iotdb·ainode
智_永无止境3 天前
Apache Commons Math3 使用指南:强大的Java数学库
apache·math
一只 Lemon4 天前
jquery 文件上传 (CVE-2018-9207)漏洞复现
apache
喜欢你,还有大家5 天前
Apache服务——搭建实验
apache
一休哥助手5 天前
Apache Thrift:跨语言服务开发的高性能RPC框架指南
网络协议·rpc·apache
Apache IoTDB5 天前
Apache IoTDB V1.3.5 发布|优化加密算法,优化内核稳定性,修复社区反馈问题
apache·iotdb
悠悠~飘5 天前
php学习(第四天)
php·apache
白鹭5 天前
apache实现LAMP+apache(URL重定向)
linux·运维·apache·url重定向·apache实现lamp架构
aramae5 天前
终端之外:解锁Linux命令行的魔法与力量
linux·服务器·apache