CN114338796A - 动态反向代理方法、装置、反向代理***、设备及介质 - Google Patents
动态反向代理方法、装置、反向代理***、设备及介质 Download PDFInfo
- Publication number
- CN114338796A CN114338796A CN202111633900.6A CN202111633900A CN114338796A CN 114338796 A CN114338796 A CN 114338796A CN 202111633900 A CN202111633900 A CN 202111633900A CN 114338796 A CN114338796 A CN 114338796A
- Authority
- CN
- China
- Prior art keywords
- request
- address
- actual
- processing
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000006870 function Effects 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 4
- 230000008859 change Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了动态反向代理方法、装置、反向代理***、设备及介质。其中方法包括:接收客户端发送的处理请求,并解析所述处理请求中的请求参数;基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址;基于所述实际服务地址,将所述处理请求转发至相应处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。实现了对服务地址的动态获取与代理,从而实现了实际服务地址对客户端的有效屏蔽,以达到某些信息保护的效果,提高了内部服务器的安全性。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及动态反向代理方法、装置、反向代理***、设备及介质。
背景技术
随着近年来互联网服务的指数级增长,针对服务端的各类网络攻击层出不穷,如何有效规避攻击风险,隐藏服务端地址,提升服务端安全性,成为业内不断探索与改进的热点议题。
发明内容
本发明实施例提供动态反向代理方法、装置、反向代理***、设备及介质,以实现对实际服务地址的动态代理访问,提高访问地址安全性。
第一方面,本发明实施例提供了一种动态反向代理方法,包括:
接收客户端发送的处理请求,并解析所述处理请求中的请求参数;
基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址;
基于所述实际服务地址,将所述处理请求转发至相应处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
第二方面,本发明实施例还提供了一种动态反向代理装置,包括:
处理请求解析模块,用于接收客户端发送的处理请求,并解析所述处理请求中的请求参数;
实际服务地址确定模块,用于基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址;
请求处理模块,用于基于所述实际服务地址,将所述处理请求转发至处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
第三方面,本发明实施例还提供了一种反向代理***,包括反向代理服务器和实际地址生成服务器,其中,
所述反向代理服务器接收客户端发送的处理请求,并解析所述处理请求中的请求参数,基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器;
所述实际地址生成服务器基于所述请求参数生成的实际服务地址,并将所述实际服务地址反馈至所述反向代理服务器;
所述反向代理服务器基于所述实际服务地址,将所述处理请求转发至处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
第四方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任一实施例提供的动态反向代理方法。
第五方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例提供的动态反向代理方法。
本实施例提供的技术方案,通过反向代理服务器在接收到客户端访问请求的情况下,基于访问请求中的请求参数向实际地址生成服务器请求实际服务地址,该实际服务地址为实际地址生成服务器基于请求参数实时生成的动态地址,并将客户端的访问请求转发至实际服务地址进行处理,实现了对服务地址的动态代理,从而实现了实际服务地址对客户端(如浏览器)的有效屏蔽,以达到某些信息保护的效果,提高了内部服务器的安全性。
附图说明
图1为本发明实施例提供的一种动态反向代理方法的流程示意图;
图2是本发明实施例提供的一种反向代理服务的示意图;
图3是本发明实施例提供的一种动态反向代理装置的结构示意图;
图4是本发明实施例提供的一种反向代理***的结构示意图;
图5是本发明实施例提供的反向代理***的工作流程示意图;
图6是本发明实施例提供的反向代理服务器的工作流程示意图;
图7是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1为本发明实施例提供的一种动态反向代理方法的流程示意图,本实施例可适用于对访问请求进行动态代理的情况,该方法可以由本发明实施例提供的一种动态反向代理装置来执行,该动态反向代理装置可以由软件和/或硬件来实现,该动态反向代理装置可以配置在诸如反向代理服务器等的电子设备上。
反向代理以其简易的配置操作和良好的内外隔绝性,在保护服务端方面得到了广泛的应用和发展。通过配置反向代理服务器,外部客户端只能通过反向代理服务器来访问内部服务,内部服务器对于外部而言并不可见,对反向代理服务器的攻击也无法破坏内部服务器,从而保护内部服务地址不被泄露,有效提升了安全性。
参见图2,图2是本发明实施例提供的一种反向代理服务的示意图。图2中的反向代理服务通过反向代理服务器实现,其中,反向代理服务器可以是Nginx反向代理服务器。Nginx反向代理服务器接收来自外部客户端(如浏览器)的访问请求,依据配置的转发策略,将请求转发给后端的内部服务器进行处理,并将处理结果返回给客户端。由于外部客户端不能直接访问真实的内部服务器,即使遭到恶意网络攻击,也可保证内部服务器的安全。
Nginx反向代理服务器通过配置文件中的proxy_pass URL(Uniform ResourceLocator,统一资源***)参数来设定转发策略,将请求转发到固定的一个或多个内部服务器地址。如图2,外部客户端的访问请求将被转发到固定的三台内部服务器地址上。当前,Nginx一旦配置完毕,内部服务地址就固定为三台服务器的地址,且保持不变。外部请求也只会转发到配置好的地址上。相应的,存在如下技术问题:只能配置固定不变的内部服务地址,不能实时更新,无法解决内部服务地址会动态变化的问题,以及无法适应新场景下内部服务地址会根据需求(如访问请求等)实时生成的情况。
针对上述技术问题,本发明实施例提供了一种动态反向代理方法,该方法具体包括如下步骤:
S110、接收客户端发送的处理请求,并解析所述处理请求中的请求参数。
S120、基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址。
S130、基于所述实际服务地址,将所述处理请求转发至相应处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
本实施例中,反向代理服务器接收客户端发送的访问请求,该访问请求中包括请求参数。在一些实施例中,该访问请求可以是请求报文的形式,例如http报文,该请求报文中包括请求头和请求体,请求参数一般设置在请求体中。解析访问请求,提取访问请求中的请求参数。其中,请求参数由用户在客户端的具体访问操作确定,对此不作限定。示例性的,访问请求可以是登录请求、验证请求、访问页面的数据请求等,相应的,访问请求中的访问参数可以是登录***的标识、验证信息、文件ID或页面ID等。
反向代理服务器基于解析得到的请求参数,生成实际地址请求,将实际地址请求发送至实际地址生成服务器,以使实际地址生成服务器生成该访问请求对应的实际动态地址。本实施例中,通过调用反向代理服务器中的处理模块,以使该处理模块执行上述实际地址的请求过程。示例性的,处理模块可以是set_by_lua处理模块。
在一些实施例中,所述解析所述处理请求中的请求参数,包括:基于参数提取函数,获取所述处理请求中的请求参数,并将所述请求参数存储为预设变量。相应的,基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,包括:基于所述处理请求参数对应的各预设变量进行拼接,得到实际地址请求的请求地址;将所述实际地址请求的请求地址作请求发送函数的入参参数,基于所述请求发送函数将实际地址请求发送至实际地址生成服务器。
其中,用于对请求参数进行存储的预设变量,可以是用于生成请求地址的处理模块确定,在一些实施例中,用于生成请求地址的处理模块可以是set_by_lua处理模块,相应的,预设变量可以是lua变量。在其他实施例中,预设变量随用于生成请求地址的处理模块的进行变换设置,对此不作限定。
示例性的,参数提取函数可以是Lua函数ngx.req.get_uri_args(),该函数用于提取访问请求中的请求参数,并存储为预设变量。根据实际地址请求的请求模板,将预设变量添加到请求模板的对应位置处,形成实际地址请求。根据实际地址生成服务器的请求地址模板,对各请求参数对应的预设变量进行拼接,示例性的,将预设变量添加到请求地址模板的对应位置处,得到实际地址请求的请求地址URL。基于该请求地址URL将实际地址请求发送至实际地址生成服务器。示例性的,可以是基于请求发送函数,即Lua函数io.popen(“curl”..URL)将实际地址请求发送至实际地址生成服务器,并通过请求发送函数的返回结果读取实际服务地址。
在一些实施例中,实际地址生成服务器响应于接收到的实际地址请求,动态生成该实际地址请求对应的实际服务地址,并将该实际服务地址反馈至反向代理服务器,反向代理服务器接收实际服务地址,直接将客户端的访问请求基于该实际服务地址进行转发。可选的,实际服务地址可以是URL地址。需要说明的是,实际地址生成服务器配置有实际地址生成规则,在接收到反向代理服务器的实际地址请求的情况下,调用实际地址生成规则,基于实际地址请求中的请求参数和实际地址生成规则生成对应的实际服务地址。此处对实际地址生成规则不作限定,可根据实际地址的生成需求进行设置,以及,在一些实施例中,实际地址生成规则可根据生成需要进行更新。
在一些实施例中,实际地址生成服务器响应于接收到的实际地址请求,动态生成该实际地址请求对应的实际服务地址。可选的,在接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址之后,还包括:将所述实际地址生成服务器反馈的所述实际服务地址存储为预设变量;相应的,基于反向代理语句将所述处理请求转发至预设变量中的实际服务地址对应的处理服务器。其中,该实际服务地址可以是包括但不限于域名、IP地址、服务端口、机器特征码、动态信息、请求参数等。实际地址生成服务器可以是将上述信息中的部分或全部基于预设的拼接方式拼接为实际服务地址。需要说明的是,请求参数对应的预设变量与实际服务地址对应的预设变量可以是相同类型的变量,例如lua变量,但是请求参数对应的预设变量与实际服务地址对应的预设变量的内容不同,可以是将请求参数存储为第一预设变量,将实际服务地址存储为第二预设变量。
将接收的实际地址生成服务器的实际服务地址输入至处理模块,即set_by_lua处理模块。具体的,通过信息读取函数获取反馈报文中的实际服务地址,例如可以是通过Lua的read()函数读取实际服务地址。将提取的实际服务地址,存入预设的预设变量,作为set_by_lua处理模块返回值,使用反向代理语句(例如可以是proxy_pass语句)将set_by_lua返回值设置为代理地址,即实际服务地址,实现对处理请求的转发。
反向代理服务器将客户端的访问请求基于动态生成的实际服务地址进行转发,以使实际服务器对访问请求进行处理,并反馈处理结果。需要说明的是,反向代理服务器对访问请求的转发中携带了客户端的标识或者地址等信息,便于实际服务器可将处理结果直接发送至客户端,避免了通过反向代理服务器对处理结果的转发,简化了处理结果的传输过程。
本实施例提供的技术方案,通过反向代理服务器在接收客户端访问请求的情况下,基于访问请求中的请求参数向实际地址生成服务器请求实际服务地址,该实际服务地址为实际地址生成服务器基于请求参数实时生成的动态地址,将客户端的访问请求转发至该实际服务地址进行处理,实现了对服务地址的动态代理,通过实际服务地址对客户端(如浏览器)的有效屏蔽,从而可达到某些信息保护的效果,提高了内部服务器的安全性。
在上述实施例的基础上,实际地址生成服务器生成实际服务地址的方式包括:基于所述实际地址请求中的请求参数为查询条件,在预设信息存储的数据存储模块中进行查询,得到实际服务地址。其中,对信息进行存储的数据存储模块包括但不限于数据库、配置文件、缓存区等,上述数据存储模块中存储各实际服务器的实际服务地址,各实际服务地址分别与不同的请求参数存在对应关系,根据请求参数在各个实际服务地址的关联参数中进行匹配,将匹配成功的关联参数对应的实际服务地址确定为该实际地址请求对应的实际服务地址。可选的,数据存储模块中的实际服务地址可根据更新需求进行变更,示例性的,数据存储模块中的实际服务地址为动态变化的地址信息,可以是根据预设的多个地址信息进行周期性变化,还可以是在接收到实际服务器的地址变更指令的情况下,响应地址变更指令,对数据存储模块中的地址信息进行并更,其中,地址变更指令中可以包括变更后的地址信息,还可以包括地址信息的变更方式,还可以包括数据存储模块中存储的变更方式的触发信号。
在上述实施例的基础上,实际地址生成服务器生成实际服务地址的方式包括:基于所述实际地址请求中的请求参数,调用对应的请求接口,获取实际服务地址。其中,不同的实际服务器可以是对应不同的请求接口。
实际地址生成服务器通过解析实际地址请求得到请求参数,确定对应的请求接口,调取请求接口,以得到对应的实际服务地址。其中,请求接口可以是本地服务接口或者外部服务接口。可选的,实际地址生成服务器根据请求参数的类型确定对应的请求接口,各个请求接口对应不同的请求参数类型,基于请求参数的类型与各请求接口对应不同的请求参数类型相匹配,确定对应的请求接口。其中,请求参数的类型可以是基于请求参数的字段名或者类确定。示例性的,请求参数中包括验证码,则请求参数的类型可以是验证请求,对应的实际服务器可以是验证服务器。
可选的,实际地址生成服务器根据请求参数确定所访问的实际服务器,调用所访问的实际服务器对应的访问接口。示例性的,请求参数中可以包括访问对象标识,例如访问对象标识可以是应用标识,基于访问对象标识确定所访问的实际服务器。
本实施例中,请求接口中的地址信息,可以是根据实际服务器的变更需要进行变更,其中,变更方式可以是实时变更,或者周期性变更,或者根据变更指令触发变更等,对此不作限定。
在上述实施例的基础上,实际地址生成服务器生成实际服务地址的方式包括:将所述实际地址请求中的请求参数进行格式转换,基于格式转换后的请求参数和预设动态信息进行拼接,得到实际服务地址。其中,对请求参数的格式转换根据所访问的实际服务器的地址需求或者地址模板的格式需求确定,相应的,确定请求参数对应的所访问的实际服务器,或者请求参数对应的地址模板,以得到请求参数的格式转换方式,其中,所访问的实际服务器或者地址模板可以是根据请求参数的类型或者包括的访问对象标识等确定。请求参数的格式转换方式包括但不限于进制转换、语言转换等,例如进制转换包括二进制、十六进制等,语言转换包括C语言、java语言等。
进一步的,根据所访问的实际服务器或者地址模板,确定请求参数对应的预设动态信息,该预设动态信息包括但不限于时间戳、IP地址、服务端口、机器特征码等信息中的一项或多项。将格式转换后的请求参数和预设动态信息进行预设方式的拼接,得到实际服务地址。
在一些可选实施例中,实际服务地址为URL地址,相应的,实际服务地址包括协议部分、域名部分、端口部分、虚拟目录部分、文件名部分、参数部分和锚部分。上述各部分基于预设的分隔符和顺序组成URL地址,根据上述各部分的拼接方式,将格式转换后的请求参数和预设动态信息进行拼接,以得到URL地址。其中,协议部分指访问服务器获取资源时,需要使用哪种协议,常用的协议部分包括但不限于http、https、ftp协议等,可通过“//”作为分隔符,与后续字符进行分隔。域名部分一般为资源宿主服务器的主机名或IP地址。域名部分和端口部分之间使用“:”作为分隔符,端口部分不是URL必须的部分。以http服务为例,http服务的默认端口是80,这种情况下端口号可以省略。虚拟目录部分说明了资源位于服务器的什么地方,虚拟目录部分从域名部分后的第一个“/”开始到最后一个“/”为止。文件名部分从域名部分的最后一个“/”开始到“?”为止;或者,在没有“?”的情况下,文件名部分从域名部分后的最后一个“/”开始到“#”为止,或者,如果没有“?”和“#”,从域名部分后的最后一个“/”开始到结束。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。参数部分用于提供所需要的输入参数,以便正确的与服务器进行交互。URL中有个参数组件,由字符“;”将其与URL的其余部分分隔,该参数部分用于添加上述请求参数,即经过格式转换的请求参数。在URL中“#”代表网页中的一个位置,其右面的字符就是该位置的标识符(一般情况下,锚链接会用到)。从“#”开始到最后,都属于锚部分。在一些实施例中,锚部分可以是“resume”,锚部分也不是一个URL必须的部分。
本实施例的技术方案,通过设置实际地址生成服务器,用于生成访问请求对应的动态服务地址,以辅助反向代理服务器对客户端的访问请求进行动态代理,并实现了该实际服务地址对客户端(如浏览器)的有效屏蔽,提高对实际服务器的访问安全性。
图3是本发明实施例提供的一种动态反向代理装置的结构示意图,该装置包括:
处理请求解析模块210,用于接收客户端发送的处理请求,并解析所述处理请求中的请求参数;
实际服务地址确定模块220,用于基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址;
请求处理模块230,用于基于所述实际服务地址,将所述处理请求转发至相应处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
可选的,实际服务地址确定模块220包括:
参数提取单元,用于基于参数提取函数,获取所述处理请求中的请求参数,并将所述请求参数存储为预设变量;
请求地址生成单元,用于基于所述处理请求参数对应的各预设变量进行拼接,得到实际地址请求的请求地址;
实际地址请求单元,用于将所述实际地址请求的请求地址作请求发送函数的入参参数,基于所述请求发送函数将实际地址请求发送至实际地址生成服务器。
可选的,请求地址生成单元用于:
将所述实际地址生成服务器反馈的所述实际服务地址存储为预设变量;
基于反向代理语句将所述处理请求转发至预设变量中的实际服务地址对应的处理服务器。
可选的,所述实际地址生成服务器生成实际服务地址的方式包括:
基于所述实际地址请求中的请求参数为查询条件,在预设信息存储的数据存储模块中进行查询,得到实际服务地址;或者,
基于所述实际地址请求中的请求参数,调用对应的请求接口,获取实际服务地址;或者,
将所述实际地址请求中的请求参数进行格式转换,基于格式转换后的请求参数和预设动态信息进行拼接,得到实际服务地址。
本发明实施例所提供的动态反向代理装置可执行本发明任意实施例所提供的动态反向代理方法,具备执行动态反向代理方法相应的功能模块和有益效果。
图4是本发明实施例提供的一种反向代理***的结构示意图,该反向代理***包括:反向代理服务器310和实际地址生成服务器320。
反向代理服务器310接收客户端发送的处理请求,并解析所述处理请求中的请求参数,基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器320;
实际地址生成服务器320基于所述请求参数生成实际服务地址,并将所述实际服务地址反馈至反向代理服务器310;
反向代理服务器310基于所述实际服务地址,将所述客户端处理请求转发至对应的处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。可选的,所述实际地址生成服务器320还用于,基于所述实际服务地址向所述处理服务器进行有效性验证。通过在将实际请求地址反馈至反向代理服务器310之前,对实际请求地址进行验证,避免因无效地址信息导致的访问失败等情况。
参见图5,图5是本发明实施例提供的反向代理***的工作流程示意图,浏览器/客户端将带有参数(例如参数a)的请求发送至地址动态反向代理服务(即反向代理服务器310),其中,地址动态反向代理服务可以是集成在反向代理服务器310中的服务模块,地址动态反向代理服务接收浏览器/客户端的请求,获取请求参数,拼接获取实际服务地址请求发送至地址实时生成服务(即实际地址生成服务器320),其中,地址实时生成服务可以是集成在实际地址生成服务器320的服务模块。地址实时生成服务接收地址动态反向代理服务发来的获取实际服务地址请求,解析参数,根据参数进行查询、处理或调用接口等方式,生成实际服务地址。地址实时生成服务向生成的实际服务地址发送有效性校验请求,待返回有效性结果后,将生成的实际服务地址返回给地址动态反向代理服务,地址动态反向代理服务接收到实际服务地址,并将浏览器/客户端的请求代理转发至该地址,实际服务收到转发过来的请求后,返回相应的数据给浏览器/客户端。
其中,地址动态反向代理服务向地址实时生成服务请求实际地址并将客户端请求动态代理到该实际地址的过程可以是通过图6的流程实现。其中,地址动态反向代理服务中设置代理服务利用Nginx反向代理的功能实现,其接收并解析请求参数、发送请求并接收返回结果则是利用Lua语言嵌入Nginx中实现。具体来说,在Nginx的http的server内增加一个location,在Nginx设置代理proxy_pass语句之前,使用set_by_lua语句注入Lua模块,实时获取实际服务地址。地址动态反向代理服务工作流程如下:
步骤1.接收浏览器/客户端发来的http请求;
步骤2.进入set_by_lua处理模块,使用Lua函数ngx.req.get_uri_args()获取接收到的浏览器/客户端请求参数,并存储为Lua变量;
步骤3.使用步骤2中的变量拼接获取实际服务地址的请求URL,使用Lua函数handle=io.popen(“curl”..URL)发送获取实际服务地址的请求;
步骤4.使用Lua函数handle:read()处理步骤3中请求返回的结果,并存入某Lua变量,作为set_by_lua处理模块返回值;
步骤5.使用proxy_pass语句将set_by_lua返回值设置为代理地址。
本实施例提供的技术方案,通过反向代理服务器在接收客户端访问请求的情况下,基于访问请求中的请求参数向实际地址生成服务器请求实际服务地址,实际地址生成服务器基于请求参数实时生成动态地址,并在验证有效后反馈至反向代理服务器,反向代理服务器将客户端的访问请求转发至实际服务地址进行处理,实现了对服务地址的动态代理,通过实际服务地址对客户端(如浏览器)的有效屏蔽,从而达到某些信息保护的效果,提高了内部服务器的安全性。
图7为本发明实施例提供的一种电子设备的结构示意图。图7示出了适于用来实现本发明实施方式的电子设备12的框图。图7显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器16,存储装置28,连接不同***组件(包括存储装置28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry Standard Architecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及***组件互连(Peripheral Component Interconnect,PCI)总线。
电子设备12典型地包括多种计算机***可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储装置28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块26的程序36,可以存储在例如存储装置28中,这样的程序模块26包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网关环境的实现。程序模块26通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、摄像头、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网关(例如局域网(Local Area Network,LAN),广域网Wide Area Network,WAN)和/或公共网关,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)***、磁带驱动器以及数据备份存储***等。
处理器16通过运行存储在存储装置28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的动态反向代理方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的动态反向代理方法。
当然,本发明实施例所提供的一种计算机可读存储介质,其上存储的计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的动态反向代理方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的源代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的源代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机源代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。源代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网关——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种动态反向代理方法,其特征在于,包括:
接收客户端发送的处理请求,并解析所述处理请求中的请求参数;
基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址;
基于所述实际服务地址,将所述处理请求转发至对应的处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述解析所述处理请求中的请求参数,包括:
基于参数提取函数,获取所述处理请求中的请求参数,并将所述请求参数存储为预设变量。
3.根据权利要求2所述的方法,其特征在于,所述基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,包括:
基于所述处理请求对应的各预设变量进行拼接,得到实际地址请求的请求地址;
将所述实际地址请求的请求地址作为请求发送函数的入参参数,基于所述请求发送函数将实际地址请求发送至实际地址生成服务器。
4.根据权利要求1所述的方法,其特征在于,在所述接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址之后,还包括:
将所述实际地址生成服务器反馈的所述实际服务地址存储为预设变量;
相应的,所述基于所述实际服务地址,将所述处理请求转发至对应的处理服务器,包括:
基于反向代理语句,将所述处理请求转发至预设变量中的实际服务地址对应的处理服务器。
5.根据权利要求1所述的方法,其特征在于,所述实际地址生成服务器生成实际服务地址的方式包括:
基于所述实际地址请求中的请求参数为查询条件,在预设信息存储的数据存储模块中进行查询,得到实际服务地址;或者,
基于所述实际地址请求中的请求参数,调用对应的请求接口,获取实际服务地址;或者,
将所述实际地址请求中的请求参数进行格式转换,基于格式转换后的请求参数和预设动态信息进行拼接,得到实际服务地址。
6.一种动态反向代理装置,其特征在于,包括:
处理请求解析模块,用于接收客户端发送的处理请求,并解析所述处理请求中的请求参数;
实际服务地址确定模块,用于基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器,并接收所述实际地址生成服务器基于所述请求参数生成的实际服务地址;
请求处理模块,用于基于所述实际服务地址,将所述处理请求转发至处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
7.一种反向代理***,其特征在于,包括反向代理服务器和实际地址生成服务器,其中,
所述反向代理服务器接收客户端发送的处理请求,并解析所述处理请求中的请求参数,基于所述请求参数生成实际地址请求,并将所述实际地址请求发送至实际地址生成服务器;
所述实际地址生成服务器基于所述请求参数生成实际服务地址,并将所述实际服务地址反馈至所述反向代理服务器;
所述反向代理服务器基于所述实际服务地址,将所述处理请求转发至处理服务器,以使所述处理服务器响应所述处理请求,并将处理结果反馈至所述客户端。
8.根据权利要求7所述的反向代理***,其特征在于,所述实际地址生成服务器还用于,基于所述实际服务地址向所述处理服务器进行有效性验证。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一所述的动态反向代理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的动态反向代理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111633900.6A CN114338796B (zh) | 2021-12-29 | 2021-12-29 | 动态反向代理方法、装置、反向代理***、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111633900.6A CN114338796B (zh) | 2021-12-29 | 2021-12-29 | 动态反向代理方法、装置、反向代理***、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338796A true CN114338796A (zh) | 2022-04-12 |
CN114338796B CN114338796B (zh) | 2024-04-30 |
Family
ID=81017917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111633900.6A Active CN114338796B (zh) | 2021-12-29 | 2021-12-29 | 动态反向代理方法、装置、反向代理***、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338796B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105100263A (zh) * | 2015-08-20 | 2015-11-25 | 百度在线网络技术(北京)有限公司 | 一种反向代理方法及装置 |
CN110830280A (zh) * | 2018-08-10 | 2020-02-21 | 深圳市鸿合创新信息技术有限责任公司 | 一种微服务网关装置及方法、电子设备 |
CN111200655A (zh) * | 2019-12-31 | 2020-05-26 | 北京奇才天下科技有限公司 | 一种基于代理服务器的内网访问方法、***、电子设备 |
CN112637346A (zh) * | 2020-12-24 | 2021-04-09 | 北京知道创宇信息技术股份有限公司 | 代理方法、装置、代理服务器及存储介质 |
-
2021
- 2021-12-29 CN CN202111633900.6A patent/CN114338796B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105100263A (zh) * | 2015-08-20 | 2015-11-25 | 百度在线网络技术(北京)有限公司 | 一种反向代理方法及装置 |
CN110830280A (zh) * | 2018-08-10 | 2020-02-21 | 深圳市鸿合创新信息技术有限责任公司 | 一种微服务网关装置及方法、电子设备 |
CN111200655A (zh) * | 2019-12-31 | 2020-05-26 | 北京奇才天下科技有限公司 | 一种基于代理服务器的内网访问方法、***、电子设备 |
CN112637346A (zh) * | 2020-12-24 | 2021-04-09 | 北京知道创宇信息技术股份有限公司 | 代理方法、装置、代理服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114338796B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106936793B (zh) | 一种信息拦截处理方法及终端 | |
EP3440542B1 (en) | Applying bytecode obfuscation techniques to programs written in an interpreted language | |
US9438625B1 (en) | Mitigating scripted attacks using dynamic polymorphism | |
CN110062043B (zh) | 服务治理方法、服务治理装置、存储介质及电子设备 | |
US9489356B2 (en) | Enhanced document and event mirroring for accessing internet content | |
CN112272158A (zh) | 一种数据代理方法、***及代理服务器 | |
CN111062024B (zh) | 一种应用登录方法和装置 | |
US20160149953A1 (en) | Client/server polymorphism using polymorphic hooks | |
CN107465693B (zh) | 请求消息处理方法和装置 | |
CN107463453B (zh) | 同一终端不同应用间通信的方法、装置、设备和存储介质 | |
US8380812B2 (en) | Source identification for multipart content validation | |
CN111030963B (zh) | 文档追踪方法、网关设备及服务器 | |
CN104536890A (zh) | 测试***、方法和装置 | |
CN113239308B (zh) | 一种页面访问方法、装置、设备及存储介质 | |
CN112528274B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
WO2021078062A1 (zh) | Ssl证书校验方法、装置、设备及计算机存储介质 | |
US9942267B1 (en) | Endpoint segregation to prevent scripting attacks | |
CN113923008B (zh) | 一种恶意网站拦截方法、装置、设备及存储介质 | |
CN114416169A (zh) | 基于微前端的数据处理方法、介质、装置和计算设备 | |
CN114157485A (zh) | 一种资源访问方法、装置和电子设备 | |
CN110177096B (zh) | 客户端认证方法、装置、介质和计算设备 | |
CN112306591B (zh) | 一种基于页面的远程调试方法及装置 | |
AU2018390863B2 (en) | Computer system and method for extracting dynamic content from websites | |
CN114338796B (zh) | 动态反向代理方法、装置、反向代理***、设备及介质 | |
CN112925589A (zh) | 扩展接口的调用方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |