API网关-Apisix路由配置教程

文章目录

  • 前言
  • 一、简介
    • 1. 路由简介
    • 2. 路由配置方式
  • 二、路由配置(手动填写上游方式)
    • 1. 路由请求转发配置
      • 1.1 设置路由信息
      • 1.2 设置上游服务
      • 1.3 插件配置
      • 1.4 测试
      • 1.5 查看配置数据
      • 1.7 数据编辑器配置
    • 2. 路由请求转发并添加路径前缀
      • 2.1 在数据编辑器输入yml代码
      • 2.2 测试
    • 3. 路由消费权限配置
      • 3.1 消费者权限控制介绍
      • 3.2 消费者配置
      • 3.3 路由配置
      • 3.4 测试
  • 总结


前言

本文介绍了APISIX中路由配置的基本概念和使用方式。路由是APISIX的核心组件之一,它通过定义规则来匹配请求并将其转发到相应的上游服务。读者将了解不同的路由配置方式,并学习如何手动填写上游服务、选择上游服务、绑定服务以及使用数据编辑器进行配置。


一、简介

1. 路由简介

Route(也称为路由)是 APISIX 中最基础和最核心的资源对象,APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后将请求转发给到指定的上游服务。

2. 路由配置方式

  • 手动填写上游服务
  • 选择上游服务
  • 绑定服务
  • 使用数据编辑器

二、路由配置(手动填写上游方式)

这里以公共接口http://postman-echo.com/get?foo1=bar1&foo2=bar2为例。该接口的返回数据如下:
在这里插入图片描述

1. 路由请求转发配置

预期结果:通过访问http://192.168.145.103:9080/get?foo1=bar1&foo2=bar2可以得到与http://postman-echo.com/get?foo1=bar1&foo2=bar2一样的返回结果。

1.1 设置路由信息

设置路由名称。
在这里插入图片描述

填写路由路径,并设置http方法。

在这里插入图片描述

1.2 设置上游服务

选择手动填写,输入目标主机名和端口。然后点击下一步。
在这里插入图片描述

1.3 插件配置

不用设置插件,直接点击下一步。

在预览处提交,配置完成。

1.4 测试

测试结果如下图所示,配置成功。
在这里插入图片描述

1.5 查看配置数据

点击更多,查看,然后会显示配置数据。

在这里插入图片描述
在这里插入图片描述

配置数据如下。

uri: /get
name: postman-get-route
methods:- GET
upstream:nodes:- host: postman-echo.comport: 80weight: 1timeout:connect: 6send: 6read: 6type: roundrobinscheme: httppass_host: passkeepalive_pool:idle_timeout: 60requests: 1000size: 320
status: 1

1.7 数据编辑器配置

可以使用数据编辑器直接完成上面的配置。
点击高级特性,进入数据编辑器页面。

在这里插入图片描述
在这里插入图片描述

然后把上面的yml代码复制到数据编辑器中,修改名称为postman-get-route01,如下所示。

uri: /get
name: postman-get-route01
methods:- GET
upstream:nodes:- host: postman-echo.comport: 80weight: 1timeout:connect: 6send: 6read: 6type: roundrobinscheme: httppass_host: passkeepalive_pool:idle_timeout: 60requests: 1000size: 320
status: 1

然后点击提交,完成配置。

在这里插入图片描述
在这里插入图片描述

2. 路由请求转发并添加路径前缀

预期结果:通过访问http://192.168.145.103:9080/postmanget/get?foo1=bar1&foo2=bar2,得到与http://postman-echo.com/get?foo1=bar1&foo2=bar2一样的返回结果。

为了方便,接下来都使用数据编辑器配置。

2.1 在数据编辑器输入yml代码

在数据编辑器中输入以下yml代码。

uris:- /get- /postmanget/*
name: postman-get_proxy-rewrite
methods:- GET
plugins:proxy-rewrite:regex_uri:- ^/postmanget/(.*)- /$1
upstream:nodes:- host: postman-echo.comport: 80weight: 1timeout:connect: 6send: 6read: 6type: roundrobinscheme: httppass_host: passkeepalive_pool:idle_timeout: 60requests: 1000size: 320
status: 1

如下图所示,然后点击提交。

在这里插入图片描述

2.2 测试

测试结果如下图所示,配置成功。

在这里插入图片描述

3. 路由消费权限配置

预期结果:通过访问http://192.168.145.103:9080/postmanget/get?foo1=bar1&foo2=bar2且需要进行身份验证(使用basic-auth插件进行验证为例),才可以得到与http://postman-echo.com/get?foo1=bar1&foo2=bar2一样的返回结果。

3.1 消费者权限控制介绍

在没有给路由指定消费者的情况下,默认所有消费者都可以进行访问。使用消费者权限控制插件把消费者加入路由的白名单后,只有白名单的消费者可以进行路由访问。同时加入白名单和黑名单,黑名单的优先级更高。

3.2 消费者配置

配置方式1
选择消费者,点击创建。

在这里插入图片描述

输入需要创建的消费者名称,并点击下一步。

在这里插入图片描述

启用basic-auth插件。

在这里插入图片描述

启用插件,输入需要设置认证的账号和密码,点击提交。

在这里插入图片描述

此时basic-auth插件已经启用,状态变为编辑,点击下一步,然后提交。

在这里插入图片描述
配置方式2
选择消费者,点击数据编辑器。

在这里插入图片描述

修改编辑方式为YAML。

在这里插入图片描述
输入以下yml代码。

username: postman_get
plugins:basic-auth:_meta:disable: falsepassword: postman123username: postman

如下图所示,点击提交,配置完成。

在这里插入图片描述

3.3 路由配置

在数据编辑器中输入以下yml代码。

uris:- /get- /postmanget/*
name: postman-get
methods:- GET
plugins:basic-auth: {}consumer-restriction:whitelist:- postmanproxy-rewrite:regex_uri:- ^/postmanget/(.*)- /$1
upstream:nodes:- host: postman-echo.comport: 80weight: 1timeout:connect: 6send: 6read: 6type: roundrobinscheme: httppass_host: passkeepalive_pool:idle_timeout: 60requests: 1000size: 320
status: 1

如下图所示,然后点击提交。

在这里插入图片描述

3.4 测试

测试结果如下图所示,配置成功。

在没有填写账号密码时,提示请求缺少授权。

在这里插入图片描述

添加认证后可以进行正常访问。

在这里插入图片描述

当把消费者加入黑名单后,提示消费者被禁止访问。

在这里插入图片描述


总结

在本文中,我们详细讲解了APISIX中路由配置的各种方法和技巧。通过手动填写上游服务或使用数据编辑器等方式,读者可以轻松地定义自己所需的路由规则,并根据实际情况添加路径前缀或设置消费者权限控制。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484302.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(3)llvm ir转换过程

(1)DAG Lowering 输入的IR转换成SelectionDAG的过程被称作lowering 就是把llvm ir转成这种 (2)DAG legalization "DAG legalization"(有向无环图合法化)是编译器后端,特别是在LLVM中…

施华洛世奇 Swarovski EDI需求分析

施华洛世奇为全球首屈一指的光学器材及精确切割仿水晶制造商,为时尚服饰、首饰、灯饰、建筑及室内设计提供仿水晶元素。施华洛世奇有两个主要业务,分别负责制造及销售仿水晶元素,以及设计制造成品。 EDI传输协议 施华洛世奇 Swarovski 与合作…

虚拟机的内存结构

一、摘要 熟悉 Java 语言特性的同学都知道,相比 C、C 等编程语言,Java 无需通过手动方式回收内存,内存中所有的对象都可以交给 Java 虚拟机来帮助自动回收;而像 C、C 等编程语言,需要开发者通过代码手动释放内存资源&…

SQL 练习题目(入门级)

今天发现了一个练习SQL的网站--牛客网。里面题目挺多的,按照入门、简单、中等、困难进行了分类,可以直接在线输入SQL语句验证是否正确,并且提供了测试表的创建语句,也可以方便自己拓展练习,感觉还是很不错的一个网站&a…

时域相位分析技术 和空域相位分析技术

l) 时域相位分析技术 在光 学测量 的许 多情况 下 , 时变图像信 号 的背景光 强 与调制 度可 以看作是 常 数 ,并且 其光 强 随时 间 的变化也满足 正 弦条件 。 那 么针 对某 一 空 间采样 点 (x ,y) , 某时刻 采 集到 的光 强 可…

django配置视图并与模版进行数据交互

目录 安装django 创建一个django项目 项目结构 创建视图层views.py 写入视图函数 创建对应视图的路由 创建模版层 配置项目中的模版路径 创建模版html文件 启动项目 浏览器访问结果 安装django pip install django 创建一个django项目 这里最好用命令行完成&#xf…

2024年2月23日 十二生肖 今日运势

小运播报:2024年2月23日,星期五,农历正月十四 (甲辰年丙寅月丁巳日),法定工作日。 红榜生肖:猴、牛、鸡 需要注意:鼠、虎、猪 喜神方位:正南方 财神方位:…

《论文阅读》e-CARE:探索可解释因果推理的新数据集 ACL2022

《论文阅读》e-CARE:探索可解释因果推理的新数据集 ACL2022 前言简介数据集优势数据集语料级别的统计数据集示例评分标准前言 今天为大家带来的是《e-CARE: a New Dataset for Exploring Explainable Causal Reasoning》 出版:ACL 时间:2022 类型:因果推理 关键词:情绪…

探索Redis是否为单线程的奥秘(文末送书)

🌈个人主页:聆风吟 🔥系列专栏:数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. Redis中的多线程二. I/O多线程三. Redis中的多进程四. 结论五. 书籍推荐5.1 书…

汉诺塔问题—java详解(附源码)

来源及应用 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍…

C语言运用中断子系统用驱动控制led实验,c语言串口led点灯实验(驱动+应用层)

中断子系统用驱动控制led实验 驱动代码 #include <linux/init.h> #include <linux/module.h>#include<linux/interrupt.h> #include<linux/gpio.h> #include<linux/timer.h>#include<linux/of.h> #include<linux/of_irq.h> #inclu…

2-21算法习题总结

由于蓝桥杯的题,我不知道从怎么复制,就只能粘贴图片了 翻硬币 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String start sc.next();char[] starts start.toCharArray();String end sc…