文章目录
- 前言
- 一、简介
- 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中路由配置的各种方法和技巧。通过手动填写上游服务或使用数据编辑器等方式,读者可以轻松地定义自己所需的路由规则,并根据实际情况添加路径前缀或设置消费者权限控制。
希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!