一种无NGINX的请求转发在应用层的分流方法及其装置与流程

文档序号:17984967发布日期:2019-06-22 00:20阅读:255来源:国知局
一种无NGINX的请求转发在应用层的分流方法及其装置与流程

本发明涉及互联网领域,尤指一种无nginx的请求转发在应用层的分流方法及其装置。



背景技术:

nginx是一种轻量级的web服务器/反向代理服务器及电子邮件(imap/pop3)代理服务器。

通常,当获取到一个http请求报文时,nginx通过查找配置文件将该http请求报文映射到对应的服务器上。举例来讲,当在一台主机上部署了多个不同的网站服务器,并且需要能在80端口同时访问这些网站服务器时,可以使用nginx的反向代理功能,也就是设置nginx在80端口监听所有http请求报文,并根据配置文件转发到对应的网站服务器上。

然而,本发明的发明人在实现上述现有技术的过程中发现,在涉及到转发规则的变动,修改nginx的配置文件时,由于新来人员无法掌握nginx的转发配置情况,导致需要专门维护nginx的人来进行处理,进而导致转发http请求报文的效率较低。



技术实现要素:

为了解决上述技术问题,本发明提供了一种无nginx的请求转发在应用层的分流方法及其装置,能够解决就医效率较低的问题。

为了达到本发明目的,本发明提供了一种无nginx的请求转发在应用层的分流方法,包括:

获取超文本传输协议http请求报文;

对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息,所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;

根据所述特征信息以及策略规则,对所述请求报文进行处理,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

进一步的,所述获取超文本传输协议http请求报文之前,还包括:

将更新的策略规则存储在存储系统redis中;

定时获取存储在所述redis的所述更新的策略规则。

进一步的,所述定时获取存储在所述redis的所述更新的策略规则,包括:

获取所述更新的策略规则的版本号;

将所述更新的策略规则的版本号与第一策略规则的版本号进行比较,确定最新的版本号,所述第一策略规则存储于应用内存中;

若所述更新的策略规则的版本号与第一策略规则的版本号不相同,则其判断为最新的版本号,删除所述第一策略规则的同时,将所述更新的策略规则存储于所述应用内存中,并确定存储于所述应用内存的所述更新的策略规则为所述策略规则;

若所述更新的策略规则的版本号与第一策略规则的版本号相同,则判定其为最新的版本号,并确定存储于所述应用内存的所述第一策略规则为所述策略规则。

进一步的,所述对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息之后,还包括:所述特征信息包括目的地址ip及源地址ip;所述策略规则至少包括白名单策略匹配项;

将所述目的地址ip和所述源地址ip分别与白名单表进行比对,确定所述目的地址ip和所述源地址ip是否均存在于所述白名单表;

若所述目的地址ip或所述源地址ip不存在于所述白名单表,则确定停止向下流程,并回复报错信息;

若所述目的地址ip和所述源地址ip均存在于所述白名单表,则执行所述根据所述特征信息以及策略规则,对所述请求报文进行处理。

进一步的,所述策略规则包括一个不规则二维数组,所述二维数组每一行至少设置一个所述策略匹配项;

所述根据所述特征信息以及策略规则,对所述请求报文进行处理,包括:

将所述特征信息依次与所述不规则二维数组中每一行的所述策略匹配项进行匹配,获得匹配成功的匹配结果;

将所述匹配结果进行交集处理,确定交集处理后的结果为对所述请求报文的处理结果。

本发明还提供了一种无nginx的请求转发在应用层的分流装置,包括:

获取模块,用于获取超文本传输协议http请求报文;

特征提取模块,用于对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息,所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;

处理模块,用于根据所述特征信息以及策略规则,对所述请求报文进行处理,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

进一步的,还包括:存储模块;

所述存储模块,用于将更新的策略规则存储在存储系统redis中;

所述获取模块,还用于定时获取存储在所述redis的所述更新的策略规则。

进一步的,所述获取模块,还用于获取所述更新的策略规则的版本号;

所述处理模块,还用于将所述更新的策略规则的版本号与第一策略规则的版本号进行比较,确定最新的版本号,所述第一策略规则存储于应用内存中;若所述更新的策略规则的版本号与第一策略规则的版本号不相同,则其判断为最新的版本号,删除所述第一策略规则的同时,将所述更新的策略规则存储于所述应用内存中,并确定存储于所述应用内存的所述更新的策略规则为所述策略规则;若所述更新的策略规则的版本号与第一策略规则的版本号相同,则判定其为最新的版本号,并确定存储于所述应用内存的所述第一策略规则为所述策略规则。

进一步的,所述处理模块,还用于将所述目的地址ip和所述源地址ip分别与白名单表进行比对,确定所述目的地址ip和所述源地址ip是否均存在于所述白名单表;若所述目的地址ip或所述源地址ip不存在于所述白名单表,则确定停止向下流程,并回复报错信息;若所述目的地址ip和所述源地址ip均存在于所述白名单表,则执行所述根据所述特征信息以及策略规则,对所述请求报文进行处理。

进一步的,所述策略规则包括一个不规则二维数组,所述二维数组每一行至少设置一个所述策略匹配项;

所述处理模块,还用于将所述特征信息依次与所述不规则二维数组中每一行的所述策略匹配项进行匹配,获得匹配成功的匹配结果;将所述匹配结果进行交集处理,确定交集处理后的结果为对所述请求报文的处理结果。

与现有技术相比,本发明通过获取超文本传输协议http请求报文;对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息,所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;根据所述特征信息以及策略规则,对所述请求报文进行处理,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。本实施例无需nginx对http请求报文进行转发,不需要更新nginx的配置文件,进而通过更新策略规则可实现对http请求报文的转发,从而提高了转发http请求报文的效率。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明无nginx的请求转发在应用层的分流方法一实施例的流程示意图;

图2为本发明无nginx的请求转发在应用层的分流方法二实施例的流程示意图;

图3为本发明无nginx的请求转发在应用层的分流装置一实施例的结构示意图;

图4为本发明无nginx的请求转发在应用层的分流装置二实施例的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机装置中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本发明无nginx的请求转发在应用层的分流方法一实施例的流程示意图。如图1所示,本实施例的执行主体是无nginx的请求转发在应用层的分流装置,其中,无nginx的请求转发在应用层的分流装置可以独立设置,也可以设置在应用层的服务器上。本实施例的适用场景为转发超文本传输协议http请求报文时。本实施例提供的无nginx的请求转发在应用层的分流方法,包括:

步骤101、获取超文本传输协议http请求报文。

需要说明的是,本实施例是在无nginx前置的场景下,采用纯java编写的应用程序实现了对http请求报文的转发。其中,该超文本传输协议(hypertexttransferprotocol,简称为http)请求报文是在应用层获得的,需要转发到指定网络服务器的报文,其中,该http请求报文携带有转发的目的互联网协议地址(internetprotocoladdress,简称ip)。

步骤102、对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息。

本实施例中的所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息。

具体的,通过关键词解析器对http请求报文进行处理,获得关键词,该关键词包括以下任意一项或其组合:请求报文的目的地址ip,发送请求报文的源地址ip,转发该报文的指令信息,广播该报文的指令信息;接着,通过ip解析器对关键词进行处理,获取目的地址ip和/或源地址ip。

步骤103、根据所述特征信息以及策略规则,对所述请求报文进行处理。

本实施例中的所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

举例来讲,所述策略规则包括一个不规则二维数组,所述不规则二维数组每一行至少设置一个所述策略匹配项。其中,每个策略匹配项可以根据实际要求进行设置。每一行支持交集,如果一行的交集得到唯一的结果,则不再继续判断,直接反馈结果,反之继续往下判断,如果每一行都没有唯一的结果,则获取默认的策略规则返回。举例来讲,该不规则二维数组有2行,并且每行只有一个策略匹配项,同时,不规则二维数组的每行中设置有多个内容项,分别为该策略匹配项对应的不同范围,从而将特征信息与该不规则二维数组中每个内容项进行匹配,若在第一行获得唯一结果,则输出该结果,否则进入第二行进行匹配,若匹配成功,即获得唯一结果,则输出该结果,否则获取默认的策略规则。进一步的,若一行中包括两个策略匹配项,则需要每个匹配项进行匹配,并将两个策略匹配项对应的匹配结果的交集作为输出结果。也就是说,将特征信息与包括每个策略规则的二维数据组进行匹配,当匹配成功后,获得该请求报文的处理结果,即转发链路信息,否则按默认链路进行发送。

在本实施例中,获取超文本传输协议http请求报文;对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息,所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;根据所述特征信息以及策略规则,对所述请求报文进行处理,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。本实施例无需nginx对http请求报文进行转发,不需要更新nginx的配置文件,进而通过更新策略规则可实现对http请求报文的转发,从而提高了转发http请求报文的效率。

优选的,在上述实施例的基础上,所述获取超文本传输协议http请求报文之前,还包括:

将更新的策略规则存储在存储系统redis中;

定时获取存储在所述redis的所述更新的策略规则。

具体的,本实施例中的redis是一个关键值key-value存储系统,并且redis可以支持不同类型的策略规则进行存储,例如,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。本实施例结合redis存储策略规则,通过定时任务异步将新的策略转发规则分类读取到应用内存中,加快应用解析与分流。

具体的,所述定时获取存储在所述redis的所述更新的策略规则,包括:

获取所述更新的策略规则的版本号;

将所述更新的策略规则的版本号与第一策略规则的版本号进行比较,确定最新的版本号,所述第一策略规则存储于应用内存中;

若所述更新的策略规则的版本号与第一策略规则的版本号不相同,则其判断为最新的版本号,删除所述第一策略规则的同时,将所述更新的策略规则存储于所述应用内存中,并确定存储于所述应用内存的所述更新的策略规则为所述策略规则;

若所述更新的策略规则的版本号与第一策略规则的版本号相同,则判定其为最新的版本号,并确定存储于所述应用内存的所述第一策略规则为所述策略规则。

举例来讲,根据策略规则颁布的时间顺序,每个策略规则均配置有版本号,例如第一次颁布的策略规则,其版本号设定为00001,第8次颁布的策略规则,其版本号设定为00008,进而根据版本号可以确定更新的策略规则的版本号是否为最新的版本号。

具体的,通过上述实现方式,本实施例可以将多版本同时部署,并通过修改版本号实现不同策略规则的生效。需要说明的是,该应用内存是存储该无nginx的请求转发在应用层的分流方法的应用的内存。

举例来讲,版本号可以是本领域技术人员所能采取的任何编辑版本号的方法,比如,通过发布策略规则的先后顺序,或者,按照发布策略规则的时间进行编辑,在此对版本号的编辑方法不做限制。

优选的,在上述实施例的基础上,所述对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息之后,还包括:所述特征信息包括目的地址ip及源地址ip;所述策略规则至少包括白名单策略匹配项;

将所述目的地址ip和所述源地址ip分别与白名单表进行比对,确定所述目的地址ip和所述源地址ip是否均存在于所述白名单表;

若所述目的地址ip或所述源地址ip不存在于所述白名单表,则确定停止向下流程,并回复报错信息;

若所述目的地址ip和所述源地址ip均存在于所述白名单表,则执行所述根据所述特征信息以及策略规则,对所述请求报文进行处理;

所述根据所述特征信息以及策略规则,对所述请求报文进行处理,包括:

将所述特征信息依次与所述不规则二维数组中每一行的所述策略匹配项进行匹配,获得匹配成功的匹配结果;

将所述匹配结果进行交集处理,确定交集处理后的结果为对所述请求报文的处理结果。

优选的,所述策略规则包括一个不规则不规则二维数组,所述不规则二维数组每一行至少设置一个所述策略匹配项。

图2为本发明无nginx的请求转发在应用层的分流方法二实施例的流程示意图。如图2所示,本实施例的执行主体是无nginx的请求转发在应用层的分流装置。本实施例提供的无nginx的请求转发在应用层的分流方法,包括:

步骤201、定时获取存储在所述redis的所述更新的策略规则的版本号。

步骤202、将所述更新的策略规则的版本号与第一策略规则的版本号进行比较,确定最新的版本号。

本实施例中的所述第一策略规则存储于应用内存中。

步骤203、在所述更新的策略规则的版本号为最新的版本号时,删除所述第一策略规则的同时,将所述更新的策略规则存储于所述应用内存中,并确定存储于所述应用内存的所述更新的策略规则为所述策略规则;

步骤204、在所述第一策略规则的版本号为最新的版本号时,确定存储于所述应用内存的所述第一策略规则为所述策略规则。

步骤205、获取超文本传输协议http请求报文;

步骤206、对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息。

本实施例中的所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;

步骤207、根据所述特征信息以及策略规则,对所述请求报文进行处理。

本实施例中的所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

表一为本发明无nginx的请求转发在应用层的分流方法一实施例不规则二维数组;如表一所示,所述策略规则包括一个不规则二维数组,所述不规则二维数组每一行至少设置一个所述策略匹配项,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。举例来讲,不规则二维数组的第一行设置有ip值范围策略匹配项和/或白名单策略匹配项,通过匹配获得百分比结果,进而根据不规则二维数组中第二行设置的百分比策略匹配项,从而获得输出结果。对于指定信息提取策略匹配项是指不规则二维数组的第一行设置有指定信息,根据获取的指定信息在不规则二维数组的第一行进行匹配,从而获得输出结果。

不规则二维数组的第一行设置有ip值范围策略匹配项以及白名单策略匹配项,该不规则二维数组的第一行第一个为源地址ip范围,即0-20,第一行第二个为白名单范围,即5-15,若该http请求报文的源地址ip为10,则通过表一中的第一行可以获得两个结果,通过交集的计算,可以获得唯一的结果,并且该结果可以直接输出,即将http请求报文通过端口30输出。再举例来讲,若该http请求报文的源地址ip为25,目标地址ip为35时,则通过表一中的第一行没有获得结果,接着通过第二行,即第二行的第一个在目标地址ip范围在(30-50)时,输出端口为(30-50),第二行的第二个在目标地址ip的白名单范围为(5-15)时,输出端口为30,通过表一中的第二行可以获得两个结果,通过交集的计算,可以获得唯一的结果,并且该结果可以直接输出,即将http请求报文通过端口30输出。

表一

图3为本发明无nginx的请求转发在应用层的分流装置一实施例的结构示意图。如图3所示,本实施提供的无nginx的请求转发在应用层的分流装置,包括:获取模块31、特征提取模块32和处理模块33;其中,

获取模块31,用于获取超文本传输协议http请求报文;

需要说明的是,本实施例是在无nginx前置的场景下,采用纯java编写的应用程序实现了对http请求报文的转发。其中,该超文本传输协议(hypertexttransferprotocol,简称为http)请求报文是在应用层获得的,需要转发到指定网络服务器的报文,其中,该http请求报文携带有转发的目的互联网协议地址(internetprotocoladdress,简称ip)。

特征提取模块32,用于对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息,所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;

具体的,通过关键词解析器对http请求报文进行处理,获得关键词,该关键词包括以下任意一项或其组合:请求报文的目的地址ip,发送请求报文的源地址ip,转发该报文的指令信息,广播该报文的指令信息;接着,通过ip解析器对关键词进行处理,获取目的地址ip和/或源地址ip。

处理模块33,用于根据所述特征信息以及策略规则,对所述请求报文进行处理,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

本实施例中的所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

举例来讲,所述策略规则包括一个不规则二维数组,所述不规则二维数组每一行至少设置一个所述策略匹配项。其中,每个策略匹配项可以根据实际要求进行设置。每一行支持交集,如果一行的交集得到唯一的结果,则不再继续判断,直接反馈结果,反之继续往下判断,如果每一行都没有唯一的结果,则获取默认的策略规则返回。举例来讲,该不规则二维数组有2行,并且每行只有一个策略匹配项,同时,不规则二维数组的每行中设置有多个内容项,分别为该策略匹配项对应的不同范围,从而将特征信息与该不规则二维数组中每个内容项进行匹配,若在第一行获得唯一结果,则输出该结果,否则进入第二行进行匹配,若匹配成功,即获得唯一结果,则输出该结果,否则获取默认的策略规则。进一步的,若一行中包括两个策略匹配项,则需要每个匹配项进行匹配,并将两个策略匹配项对应的匹配结果的交集作为输出结果。也就是说,将特征信息与包括每个策略规则的二维数据组进行匹配,当匹配成功后,获得该请求报文的处理结果,即转发链路信息,否则按默认链路进行发送。

在本实施例中,获取超文本传输协议http请求报文;对所述http请求报文进行特征信息提取,获得所述http请求报文的特征信息,所述特征信息包括以下任意一项或组合:目的地址ip、源地址ip、指令信息,所述指令信息包括转发该报文的指令信息、或者广播该报文的指令信息;根据所述特征信息以及策略规则,对所述请求报文进行处理,所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。本实施例无需nginx对http请求报文进行转发,不需要更新nginx的配置文件,进而通过更新策略规则可实现对http请求报文的转发,从而提高了转发http请求报文的效率。

图4为本发明无nginx的请求转发在应用层的分流装置二实施例的结构示意图。如图4所示,在上述实施例的基础上,本实施提供的无nginx的请求转发在应用层的分流装置,还可以包括:存储模块34;

所述存储模块34,用于将更新的策略规则存储在存储系统redis中;

所述获取模块31,还用于定时获取存储在所述redis的所述更新的策略规则。

进一步的,在上述实施例的基础上,所述获取模块31,还用于获取所述更新的策略规则的版本号;

所述处理模块33,还用于将所述更新的策略规则的版本号与第一策略规则的版本号进行比较,确定最新的版本号,所述第一策略规则存储于应用内存中;若所述更新的策略规则的版本号与第一策略规则的版本号不相同,则其判断为最新的版本号,删除所述第一策略规则的同时,将所述更新的策略规则存储于所述应用内存中,并确定存储于所述应用内存的所述更新的策略规则为所述策略规则;若所述更新的策略规则的版本号与第一策略规则的版本号相同,则判定其为最新的版本号,并确定存储于所述应用内存的所述第一策略规则为所述策略规则。

进一步的,在上述实施例的基础上,所述处理模块33,还用于将所述目的地址ip和所述源地址ip分别与白名单表进行比对,确定所述目的地址ip和所述源地址ip是否均存在于所述白名单表;若所述目的地址ip或所述源地址ip不存在于所述白名单表,则确定停止向下流程,并回复报错信息;若所述目的地址ip和所述源地址ip均存在于所述白名单表,则执行所述根据所述特征信息以及策略规则,对所述请求报文进行处理。

优选的,所述策略规则包括一个不规则二维数组,所述不规则二维数组每一行至少设置一个所述策略匹配项;

所述处理模块,还用于将所述特征信息依次与所述不规则二维数组中每一行的所述策略匹配项进行匹配,获得匹配成功的匹配结果;将所述匹配结果进行交集处理,确定交集处理后的结果为对所述请求报文的处理结果。

本实施例中的所述策略规则至少包括以下任意一项策略匹配项或其组合:ip值范围策略匹配项、白名单策略匹配项、百分比策略匹配项、指定信息提取策略匹配项。

在本实施例中,无需nginx对http请求报文进行转发,不需要更新nginx的配置文件,进而通过更新策略规则可实现对http请求报文的转发,从而提高了转发http请求报文的效率。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1