首页 > 编程知识 正文

重置路由表route,ip route命令详解

时间:2023-05-04 05:11:53 阅读:141428 作者:3213

kong笔记 目录导航

在前面两篇文章中,我们主要介绍了kong的概念和kong的配置。 我相信大家已经对kong有了基本的认识。 那么,应该怎么使用那个呢?

虽然有很多kong的功能,但是一个一个来,首先从kong的路由功能开始~~~

kong路由主要涉及两个组件:服务和路由。 接下来~~~~

service定义服务

是我们自己定义的上游服务。 匹配Kong中转发请求的位置,并且服务可以与以下Route相关联: 一个Service中有很多Route,匹配的Route将被转发到Service。 当然,在过程中,Plugin的处理会增加或减少相应的头和其他信息。

route路由

Route实体定义与客户端请求匹配的规则。 每个路由都与一个服务相关联,并且该服务可以有多个相关联的路由。 与给定路由匹配的每个请求都将发送到相关服务。

route和service的组合,以及它们之间关注点的分离,在Kong中定义了细粒度的入口点,提供了强大的路由机制来引导对各种upstream服务的访问。

执行过程如下

实战目标:实践Kong的service和route的基础构成功能,实现简单的API接口代理功能。

效果:通过kong代理www.baidu.com,使用kong的地址跳转到百度页面。

主要分两种方式配置,分别为:

konga方式; kong命令应如下所示:

打开konga方式konga后台管理画面,打开服务

服务配置

参数含义:

http://www.Sina.com/http://www.Sina.com/name服务名retries代理失败后的重试次数protocol为, 上游通信协议host上游主机服务port上游服务端口号path请求连接到上游服务的路径connect_timeout缺省为60000毫秒write_timeout向上游服务发送请求的超时时间。 缺省值为60000毫秒read_timeout从上游服务读取超时时间,缺省值为60000毫秒tags标记url缩写属性一次设置protocol、host、port和path。 这里只填写了name和url的字段。 其他可以临时选择默认值,根据需要进行定制和更改

接下来,让我们配置与此服务对应的route根

添加路线

相关参数

参数详细信息

属性说明name任意名称。 protocols此路由应该允许的协议列表。 如果设置为" HTTPS ",则通过将请求升级到HTTPS来回答HTTP请求。 默认值为“[“http,https’”。 methods可以选择与此Route匹配的HTTP方法列表。 如果使用http或https协议,则必须至少设置一个hosts、paths和or methods。 hosts可以选择一半与此根匹配的域名列表。 如果使用http或https协议,则必须至少设置一个主机、路径或方法。 如果使用表单编码,则符号为hosts[]=example.com&; hosts[]=foo.test。 用JSON,用阵列。 paths可以选择一半与此根匹配的路径列表。 如果使用http或https协议,则必须至少配置一个hosts、paths或methods才能至少配置一个。 如果使用表单编码,则该符号为paths []=/foo&; paths []=/bar。 使用JSON来使用数组。 headers可以选择一个或多个按标头名称索引的值列表。 如果请求中显示,则此路由匹配。 此属性的标题不可用。 请使用属性指定主机。 host ` ` hosts https _ redirect _ status _ code状态代码孔响应时,路由的所有属性都匹配,但协议除外。 这意味着,如果请求的协议不是,则它们是匹配的。 如果此字段设置为301、302、307或308,则会通过孔注入头部。 接受的值为、 违反合同。 http ` ` https ` ` location ` ` 426 ` ` 301 ` ` 302 ` ` 307 ` ` 308 ` ` 426 regex _ priority选择哪个路线来解决给定请求的数字,选择多个如果两个路径匹配且具有相同的regex_priority,则将使用旧路径(最低的created_at )。 请注意,非正则表达式根的优先级不同。 长的非正则表达式根在短的根之前匹配。 默认值为0。 如果strip_path在任一路径中与Route相匹配,则会从上游请求URL中删除匹配的前缀。 默认值为true。 path_handling控制向上游发送请求时如何组合服务路径、路由路径和请求路径。 请参考上述内容,详细说明各动作。 可以接受的值是……违反合同。 ' v0'``'v1'``'v0'pres

erve_host通过其中一个主机域名匹配Route时,请使用上游请求标头中的请求主机头。如果设置为false,则上游主机头将是服务主机的头。request_buffering是否启用请求身体缓冲。借用 HTTP 1.1,关闭带有大块传输编码的数据的服务可能有意义。违约:。trueresponse_buffering是否启用响应主体缓冲。借用 HTTP 1.1,关闭带有大块传输编码的数据的服务可能有意义。违约:。truesnis 半可选使用流路由时与此路由匹配的SNI列表。使用tcp或tls协议时,必须至少设置一个snis,sources或destinations。sources 半可选使用流路由时与此路由匹配的传入连接的IP源列表。每个条目都是一个对象,其字段为“ip”(可选地为CIDR范围表示法)和/或“port”。使用tcp或tls协议时,必须至少设置一个snis,sources或destinations。destinations 半可选使用流路由时,与此路由匹配的传入连接的IP目标列表。每个条目都是一个对象,其字段为“ip”(可选地为CIDR范围表示法)和/或“port”。使用tcp或tls协议时,必须至少设置一个snis,sources或destinations。tags 自选与路由相关的可选字符串集,用于分组和筛选。service 自选此路由所关联的服务。这是Route代理流量的地方,使用表单encode。表示法是service.id = <service_id>。使用JSON,使用“service”:{“id”:“<service_id>”}。

通过以上的设置,kong的路由功能已经设置好了,那么我们就来测试一下吧~~~~

在浏览器输入:

http://kong服务的ip:8000/myPath

即可跳转到百度的页面

或者

在shell上输入curl http://localhost:8000/myPath

kong命令方式

其实引入此模块主要是为了方便这些场景

只安装了kong,没有安装可视化页面;项目启动时,需要编写kong相关的脚本,从而需要一些命令;

步骤如下:

创建service服务

curl -i -X POST --url http://localhost:8001/services/ --data 'name=baidu-test' --data 'url=http://www.baidu.com'

为service添加route

curl -i -X POST --url http://localhost:8001/services/baidu-test/routes --data 'name=baidu-route' --data 'paths[]=/myPath'

验证是否成功

curl http://localhost:8000/myPath

然后就可以去验证了~~~~~~~

这里在科普一些我们常用的命令吧:

查看kong现存的service

curl -i -X GET --url http://localhost:8001/services

查看某个service下存在的routes

curl -i -X GET --url http://localhost:8001/services/baidu-test/routes

更新某个service的配置

curl -i -X PUT --url http://localhost:8001/services/baidu-test --data 'protocol=http' --data 'host=www.javahly.com' --data 'port=80'

删除某个services的配置

curl -i -X DELETE --url http://localhost:8001/services/baidu-test

其余的可查看一下官方文档

官方文档

踩坑点

在这里记录一个小坑:

route模块下的配置:strip_path字段和path_handling字段,这两个是联动的,具体对应关系如下:

S.PATHR.PATHR.STRIP_PATHR.PATH_HANDLINGREQUEST PATHPROXIED PATH/s/fv0falsev0/fv0req/s/fv0req/s/fv1falsev1/fv1req/sfv1req/s/tv0truev0/tv0req/s/req/s/tv1truev1/tv1req/sreq/s/fv0/falsev0/fv0/req/s/fv0/req/s/fv1/falsev1/fv1/req/sfv1/req/s/tv0/truev0/tv0/req/s/req/s/tv1/truev1/tv1/req/sreq

什么意思呢,这两个字段设置是用来决定你访问的真是路径的

比如你的设置如下

paths =/myPath,

strip_path=true,

path_handling=v0,

你service配置的url是http://www.baidu.com;

那么根据以上配置,你访问kong的请求地址是:http://localhost:8000/myPath/123,其真实的访问地址是:http://www.baidu.com/123

通过kong命令添加多个path路径时,是这样的:

curl -i -X POST --url http://localhost:8001/services/baidu-test/routes --data 'name=baidu-route' --data 'paths[]=/myPath&paths[] = /test'

而不是加,的方式

最后,附加一张konga操作页面的说明图

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。