一种反向代理方法及装置的制造方法_2

文档序号:9380440阅读:来源:国知局
述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0045]应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0046]取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0047]本发明实施例所提供的技术方案使用的系统如图1所示,主要由客户端、代理服务器和内部服务器组成,本发明实施例所提供的方法和装置在代理服务器端实现。
[0048]本发明实施例给出一种反向代理方法,请参考图2,其为本发明实施例所提供的反向代理方法的流程示意图,如图所示,该方法包括以下步骤:
[0049]S201,接收客户端发送的连接请求,所述连接请求包含请求参数。
[0050]S202,根据预先加载的用户动态配置的规则文件和所述请求参数,获得处理所述连接请求的内部服务器。
[0051]S203,向所述内部服务器发送所述连接请求。
[0052]可选地,在本发明实施例的一个可能的实现方式中,可以对代理服务器的指定目录进行监听,若监听到所述指定目录下接收到用户动态配置的规则文件,调用所述代理服务器中预设的加载指令,以使得所述加载指令加载所述规则文件。
[0053]在一个具体的实现过程中,用户可以将规则文件配置在代理服务器的指定目录下,所述规则文件可以由用户动态配置,即用户可以根据需求编写规则文件,并将规则文件配置代理服务器的指定目录下。其中,若指定目录下已经存在之前配置的规则文件,则用户配置的新的规则文件将用于替换之前配置的规则文件,从而实现规则文件的动态配置。
[0054]在一个具体的实现过程中,请参考图3,其为本发明实施例所提供的反向代理方法的实施例的流程示例图,如图所示,可以利用所述代理服务器中预设的监听程序对代理服务器中的指定目录进行监听。如果监听程序监听到所述指定目录下接收到用户动态配置的规则文件,则所述监听程序调用所述代理服务器中预设的加载指令,以使得所述加载指令运行,并加载所述规则文件,这样,所述规则文件在所述代理服务器中就生效了。
[0055]需要说明的是,所述代理服务器实现所述规则文件的加载是不需要所述代理服务器停止运行的,所述代理服务器在运行状态下就可以实现所述规则文件的加载,可以称这种加载方式是热加载,基于代理服务器的热加载功能,可以实现规则文件的动态配置以及即时生效。
[0056]在一个具体的实现过程中,所述用户动态配置的规则文件中可以包括请求参数与内部服务器的映射关系。因此,根据规则文件,代理服务器可以获知包含哪些请求参数的连接请求可以被发送给指定的内部服务器。
[0057]在一个具体的实现过程中,如图3所示,所述代理服务器加载了用户动态配置的规则文件后,所述代理服务器可以接收到所述客户端发送的连接请求,所述连接请求中可以包含请求参数。
[0058]例如,所述连接请求可以包括但不限于超文本传输协议(Hyper Text TransferProtocol, HTTP)请求。相应的,所述代理服务器可以包括但不限于HTTP代理服务器。
[0059]例如,所述HTTP代理服务器可以包括但不限于Nginx或者Lighttpd等。
[0060]本发明实施例中,如图3所示,所述代理服务器在接收到所述客户端发送的连接请求后,可以根据预先加载的用户动态配置的规则文件和所述请求参数,获得处理所述连接请求的内部服务器,进而可以将收到的连接请求发送给所述内部服务器,以便于所述内部服务器对该连接请求进行处理,并获得处理结果。
[0061]举例说明,本发明实施例中,代理服务器根据预先加载的用户动态配置的规则文件和所述请求参数,获得处理所述连接请求的内部服务器的方法可以包括但不限于:
[0062]如图3所示,首先,对预先加载的用户动态配置的规则文件进行解析,以获得请求参数与内部服务器的映射关系。然后,根据所述请求参数,在所述请求参数与内部服务器的映射关系中进行匹配,以获得匹配结果。最后,根据所述匹配结果,获得处理所述连接请求的内部服务器。
[0063]举例说明,所述代理服务器根据所述匹配结果,获得处理所述连接请求的内部服务器的方法可以包括但不限于:
[0064]如图3所示,若所述匹配结果是所述映射关系中存在与所述请求参数相匹配的内部服务器,将与所述请求参数相匹配的内部服务器作为处理所述连接请求的内部服务器。若所述匹配结果是所述映射关系中没有与所述请求参数相匹配的内部服务器,将指定的其他服务器作为处理所述连接请求的内部服务器。
[0065]在一个具体的实现过程中,所述代理服务器启动后,所述代理服务器中的请求接收模块用来接收客户端发的连接请求,然后可以通过所述代理服务器中的规则匹配模块对预先加载的用户动态配置的规则文件进行解析,进而获得请求参数与内部服务器的映射关系O
[0066]在一个具体的实现过程中,所述代理服务器中可以预先加载所述规则匹配模块,所述规则匹配模块可以是以扩展模块的形式被加载到所述代理服务器。例如,若所述代理服务器是Lighttpd,则所述规则匹配模块可以是以动态加载(*.so)模式被加载到所述代理服务器。又例如,若所述代理服务器是Nginx,则所述规则匹配模块需要与代理服务器中的其他模块一起编译。
[0067]现有技术中有一种反向代理技术,是在代理服务器外设置一个规则匹配模块,由该规则匹配模块根据预设的规则获得处理连接请求的内部服务器。然而,这种反向代理技术中,连接请求还需要经过代理服务器外的规则匹配模块,需要规则匹配模块具有较高的处理性能,然而在代理服务器外设置的规则匹配模块往往达不到所需要的处理性能。而且,单独架设一个规则匹配模块增加了反向代理的架构复杂性,增加反向代理的实现成本。
[0068]相比于上述现有技术,本发明实施例中利用代理服务器的扩展模块技术,将规则匹配模块加载到所述代理服务器中,而代理服务器中的扩展模块的处理性能比较高,因此能够解决代理服务器外设置的规则匹配模块往往达不到所需要的处理性能的问题。而且,由于在代理服务器中增加规则匹配模块,因此不会增加反向代理的架构复杂度,降低了反向代理的实现成本。
[0069]本发明实施例中,通过加载用户动态配置的规则文件,可以动态的获得规则文件,并利用热加载技术使得规则文件能够即时生效,实现了代理服务器上规则文件的动态配置,解决了现有技术中由于不能动态配置规则文件而带来的分发连接请求的灵活性比较低的问题,提高了分发连接请求的灵活性和多样性。
[0070]在一个具体的实现过程中,所述请求参数可以包括但不限于以下参数
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1