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 目录
mkdir apisix-3.7 && cd apisix-3.7
git init
git clone https://github.com/yuluo-yx/apisix-deploy
配置修改
这里的配置必须要修改,确保服务安全
Dashboard
cd /example/dashboard/
vim conf.yaml# 修改如下配置35 expire_time: 3600 # jwt token expire time, in second36 users: # yamllint enable rule:comments-indentation37 - username: admin # username and password for login `manager api`38 password: deamgodeamgo@666**用户名和密码需要修改,密码使用强类型密码**
Apisix-server
# 修改 apisix admin api 的验证 key32 admin_key:33 - name: "admin"34 key: 054f7cf07e344346cd3f287985e76a2135 role: admin # admin: manage all configuration data36 **必须修改,用于 curl 下发配置时使用**
启动
启动之前,先确定 linux 系统架构,执行以下命令,选择不同的版本执行! dpkg --print-architecture
# 运行启动脚本(以 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 发布接口
$ 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 错误码。
$ 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 进行测试。
运行前端服务
本地运行
cd /app/front/apisix-test-front
yarn
yarn dev --host
nginx 部署前端
cd /app/front/docker
docker-compose up
apisix 发布前端路由
本地运行路由发布
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 路由发布
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"]}}
请求测试
- 本地:浏览器访问 http://127.0.0.1:9080/ 查看
相关文章:
Apache APISIX 体验指南
APISIX 体验指南 所有的 sh 脚本通过 git bash 执行。 出现错误仔细核对文档。 github 地址: 使用 docker 安装 apisix 确保本地安装 Docker 和 Docker-compose 如未安装参开以下文档安装: Docker:https://docs.docker.com/engine/install/c…...
Promise的resolve和reject方法(手写题)
1.resolve 2.reject 3.手写 1.resolve //构造函数上添加 resolve 方法 Promise.resolve function (value) {return new Promise((resolve, reject) > {if (value instanceof Promise) {value.then((val) > {resolve(val)},(err) > {reject(err)})} else {resolve(v…...
关于wiki的Unlink攻击理解--附例题BUUCTF-hitcontraining_bamboobox1
堆机制我研究了很久,一直没有什么很大的进展。堆相较于栈难度大的多。利用手法也多。目前还没有怎么做过堆题。这次就把理解了很久的Unlink写一写。然后找一题实践一下。 在glibc中,堆管理都是用一个个chunk去组织的。这个就不过多阐述。Unlink是glibc一…...
【linux】日志有哪些
Linux系统日志主要有以下几种类型: 内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中设置决定内核消息及各种系统程序消息记录到什么位置。/var/log/message:该日志文件存放了内核消息…...
Redis主从复制实现RCE
文章目录 前置知识概念redis常用命令redis module 利用条件利用工具思路例题 [网鼎杯 2020 玄武组]SSRFMe总结 前置知识 概念 背景是多台服务器要保存同一份数据,如何实现其一致性呢?数据的读写操作是否每台服务器都可以处理?这里Redis就提供…...
Flutter应用程序的加固原理
在移动应用开发中,Flutter已经成为一种非常流行的技术选项,可以同时在Android和iOS平台上构建高性能、高质量的移动应用程序。但是,由于其跨平台特性,Flutter应用程序也面临着一些安全风险,例如反编译、代码泄露、数据…...
Centos7部署NFS
搭建NFS存储服务器--基于CentOS7系统 - jianmuzi - 博客园 在CentOS中搭建NFS - 陌上荼靡 - 博客园 NFS简介 NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统…...
我已经开了一个融资融券的账户了,还可以再在别的券商开两融(信用账户)吗?
融资融券交易又称“证券信用交易”或保证金交易,是指投资者向具有融资融券业务资格的证券公司提供担保物,借入资金买入证券(融资交易)或借入证券并卖出(融券交易)的行为。 简单说就是融资做多,…...
Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织
Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织 近日,在负责的项目中,我对 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行了版本升级。原以为会一切顺利,没想到却遭遇了 Spring Cloud Gateway 无法正…...
华为OD机试 - 最多购买宝石数目(Java JS Python C)
题目描述 橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i] 0 ≤ i < nn = gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续; 例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],...,ge…...
【LeetCode】挑战100天 Day17(热题+面试经典150题)
【LeetCode】挑战100天 Day17(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…...
正则表达式的基本语法
1.正则表达式基本语法 两个特殊的符号^和$。他们的作用是分别指出一个字符串的开始和结束。例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等)࿱…...
使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波
平滑处理–滤波 本文使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波 关于其他MFC单文档工程可参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-visual Studio MFC 绘制单一颜色三角形、渐变颜色边…...
Django HMAC 请求签名校验与 Vue.js 实现安全通信
概要 在 Web 应用的开发过程中,确保数据传输的安全性和完整性是一个不容忽视的问题。使用 HMAC(Hash-based Message Authentication Code)算法对请求内容进行签名校验,是一种常见且有效的安全策略。本文将详细介绍如何在 Django …...
深度学习之循环神经网络
视频链接:6 循环神经网络_哔哩哔哩_bilibili 给神经网络增加记忆能力 对全连接层而言,输入输出的维数固定,因此无法处理序列信息 对卷积层而言,因为卷积核的参数是共享的,所以卷积操作与序列的长度无关。但是因为卷积…...
与原有视频会议系统对接
要实现与原有视频会议系统对接,需要确保通信协议的一致性。连通宝视频会议系统可与第三方视频会议系统对接。实现与第三方会议系统对接还可以使用会议室连接器,可以确保不同系统之间的数据传输和交互。 具体对接流程可能因不同品牌和类型的视频会议系统而…...
C# Serilog--可记录异常完整路径
1.Serilog安装 2.控制台代码 --设置日志记录器的最小级别为 Debug,即只记录 Debug 级别及以上的日志信息 --.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day):将日志信息写入到指定路径的文件中(这里的路径…...
鉴源实验室 | 汽车网络安全攻击实例解析(三)
作者 | 张璇 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言:随着现代汽车技术的迅速发展,车辆的进入和启动方式经历了显著的演变。传统的物理钥匙逐渐被无钥匙进…...
php 中生成订单号
字母日期。。。。。。。 function setOrderNo($year 2011) {$yCode array(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z);$orderSn $yCode[intval(date(Y)) - $year] . strtoupper(dechex(date(m))) . date(d) . substr(time(), -5) . s…...
Jmeter工具+ant+jenkins实现持续集成
jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考: jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容,保存jmeter.save.saveservice.output_f…...
PyTorch 2.8镜像环境配置:CUDA 12.4与cuDNN 8+版本兼容性验证指南
PyTorch 2.8镜像环境配置:CUDA 12.4与cuDNN 8版本兼容性验证指南 1. 镜像环境概述 PyTorch 2.8深度学习镜像是一个经过深度优化的通用计算环境,专为现代AI工作负载设计。这个镜像最显著的特点是完美适配了NVIDIA最新的CUDA 12.4和cuDNN 8版本ÿ…...
pg_dump备份报错:Only syssso can access this table
文章目录环境症状问题原因解决方案环境 系统平台:N/A 版本:4.5.8 症状 使用pg_dump对数据库进行备份时报错: pg_dump:error:query failed:ERROR: Only syssso can access this table. pg_dump:error:query was: SELECT label, provider, …...
轻量级跨平台桌面应用开发:Tauri零门槛实战指南
轻量级跨平台桌面应用开发:Tauri零门槛实战指南 【免费下载链接】tauri Build smaller, faster, and more secure desktop and mobile applications with a web frontend. 项目地址: https://gitcode.com/GitHub_Trending/ta/tauri 在桌面应用开发领域&#…...
HorizonCalendar与Airbnb设计系统的完美融合:打造iOS应用中的顶级日历体验
HorizonCalendar与Airbnb设计系统的完美融合:打造iOS应用中的顶级日历体验 【免费下载链接】HorizonCalendar A declarative, performant, iOS calendar UI component that supports use cases ranging from simple date pickers all the way up to fully-featured …...
「码动四季·开源同行」go实战案例:如何在 Go 微服务中实现负载均衡?
在上文章中,我们已经介绍了负载均衡的相关概念以及在服务高可用架构中的重要性,也了解了几种主流负载均衡算法的实现。在本文中,我们将在Go微服务实例中具体使用负载均衡技术,并详细说明如何基于服务发现来实现负载均衡的微服务间…...
利用快马平台与vscode codex快速构建react待办事项应用原型
最近在尝试用AI工具快速验证产品原型,发现InsCode(快马)平台配合VSCode Codex能实现惊人的开发效率。以React待办事项应用为例,从零到可交互原型只用了不到10分钟,分享下具体实现思路和操作过程。 需求拆解与AI描述 首先将待办事项应用的7个核…...
终极窗口尺寸编辑器:SRWE让你的应用程序窗口自由伸缩
终极窗口尺寸编辑器:SRWE让你的应用程序窗口自由伸缩 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE Simple Runtime Window Editor (SRWE) 是一款革命性的开源工具,它能让你实时调整任何…...
Vivado MIG IP核实战:DDR3控制器配置与仿真全流程解析
1. Vivado MIG IP核与DDR3控制器基础认知 第一次接触DDR3控制器时,我被那些密密麻麻的时序图吓得不轻。直到发现Xilinx的MIG(Memory Interface Generator)IP核,才明白原来FPGA开发可以这么"偷懒"。这个IP核就像个贴心的…...
算法模拟类题目解析
前言:最近开始偏系统的从简单到难一步步刷算法题,先从模拟题开始,下边附带题目与连接,感兴趣可刷刷也可看看我的思路。 一.字符串展开 链接:https://ac.nowcoder.com/acm/problem/16644 来源:牛客网 题意…...
网络通信技术基础知识,网络通信技术数据包介绍
网络通信技术是关键技术之一,对于网络通信技术,我们应对其有所了解。为增加大家对网络通信技术的认识,本文将对网络通信技术的数据包结构和原理予以介绍。如果你对网络通信技术存在兴趣,不妨继续往下阅读哦。 在网络通信中, "…...
