CN109218368A - 实现Http反向代理的方法、装置、电子设备和可读介质 - Google Patents
实现Http反向代理的方法、装置、电子设备和可读介质 Download PDFInfo
- Publication number
- CN109218368A CN109218368A CN201710542097.2A CN201710542097A CN109218368A CN 109218368 A CN109218368 A CN 109218368A CN 201710542097 A CN201710542097 A CN 201710542097A CN 109218368 A CN109218368 A CN 109218368A
- Authority
- CN
- China
- Prior art keywords
- reverse proxy
- http
- user
- web
- default
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种实现Http反向代理的方法、装置、电子设备和可读介质,能够通过Java实现Http反向代理,并可以根据部分业务需要在反向代理之前自定义实现例如用户登录等个性化操作,还可以根据用户权限将用户动态代理到指定地址。该方法包括:接收Web用户的Http请求;在验证Web用户的Http请求符合预设验证规则之后,查询Web用户对应的预设反向代理地址;根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种实现Http反向代理的方法、装置、电子设备和可读介质。
背景技术
当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
现有技术中可以实现反向代理的软件有很多,比较主流的nginx、apache都是通用的高性能Http反向代理服务,可以通过系统配置文件方式实现高性能Http反向代理。目前反向代理Web服务器已经使用的非常广泛。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有技术的反向代理功能对一些特殊场景使用支持不够:无法根据部分业务需要在反向代理之前自定义实现个性化操作,例如对反向代理地址访问权限的控制、或者根据用户需求增加额外代理参数的设计;也无法实现根据不同用户的权限动态调整反向代理地址。
发明内容
有鉴于此,本发明实施例提供一种实现Http反向代理的方法、装置、电子设备和可读介质,能够通过Java实现Http反向代理,并可以根据部分业务需要在反向代理之前自定义实现例如用户登录等个性化操作,还可以根据用户权限将用户动态代理到指定地址。
为实现上述目的,根据本发明实施例的一个方面,提供了一种实现Http反向代理的方法。
本发明实施例的一种实现Http反向代理的方法包括:接收Web用户的Http请求;在验证Web用户的Http请求符合预设验证规则之后,查询Web用户对应的预设反向代理地址;根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器。
可选地,Http请求为基于Presto查询引擎的请求和/或基于Hadoop的请求。
可选地,验证Web用户的Http请求符合预设验证规则包括:验证Web用户的访问权限符合预设权限规则;和/或根据业务需求验证Web用户的代理参数符合预设代理参数规则。
可选地,预设反向代理地址是指根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址。
可选地,根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器包括:创建servletRequest对象,在servletRequest对象中封装接收到的Http请求;解析servletRequest对象,获取Http请求的方式、参数;创建DefaultHttpClient对象实例,按照Http请求的方式、参数、头信息和对应的预设反向代理地址URL信息生成HttpRequest对象并发送至目标服务器;接收目标服务器返回的HttpResponse对象;解析HttpResponse对象,将从HttpResponse对象中获取的Http请求的响应结果和头信息赋值给servletResponse对象,以生成响应数据;把servletResponse对象中的响应数据回传给Web用户。
为实现上述目的,根据本发明实施例的另一方面,提供了一种实现Http反向代理的装置。
本发明实施例的一种实现Http反向代理的装置包括:接收模块,用于接收Web用户的Http请求;验证模块,用于在验证Web用户的Http请求符合预设验证规则之后,查询Web用户对应的预设反向代理地址;定向代理模块,用于根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器。
可选地,Http请求为基于Presto查询引擎的请求和/或基于Hadoop的请求。
可选地,验证模块还用于:验证Web用户的访问权限符合预设权限规则;和/或根据业务需求验证Web用户的代理参数符合预设代理参数规则。
可选地,预设反向代理地址是指根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址。
可选地,定向代理模块还用于:创建servletRequest对象,在servletRequest对象中封装接收到的Http请求;解析servletRequest对象,获取Http请求的方式、参数;创建DefaultHttpClient对象实例,按照Http请求的方式、参数、头信息和对应的预设反向代理地址URL信息生成HttpRequest对象并发送至目标服务器;接收目标服务器返回的HttpResponse对象;解析HttpResponse对象,将从HttpResponse对象中获取的Http请求的响应结果和头信息赋值给servletResponse对象,以生成响应数据;把servletResponse对象中的响应数据回传给Web用户。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明实施例的实现Http反向代理的方法。
为实现上述目的,根据本发明实施例的又一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本发明实施例的实现Http反向代理的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用通过Java实现Http反向代理功能的技术手段,所以克服了现有技术中无法根据业务需要自定义实现个性化判断和操作的技术问题,进而达到在支持基于Java的标准Web服务的同时,实现在反向代理之前自定义实现例如用户登录等个性化操作的技术效果;此外,通过根据用户权限动态配置反向代理地址,从而将用户请求反向代理到指定系统中;本发明实施例中的反向代理功能可以轻量级地集成到现有的Web系统中,从而可以简单灵活的通过Java实现包含个性化需求的反向代理服务,并且将基于Presto查询引擎、或者Hadoop平台、或者一些公司内部系统的Http请求反向代理至指定目标服务器;通过在反向代理之前验证用户权限,从而可以实现对反向代理地址访问权限的控制;通过在反向代理之前验证根据用户增加额外代理参数,从而可以根据不同业务需求实现不同的业务判断;通过根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址,从而可以实现对每个用户访问的目标服务器的地址的控制;通过在反向代理容器中创建DefaultHttpClient对象实例,并调用参数实现对目标服务器的访问,从而能够高效的实现对不同用户请求的反向代理功能。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的实现Http反向代理的方法的主要流程的示意图;
图2是根据本发明实施例的实现Http反向代理的方法中Http反向代理功能说明的示意图;
图3是根据本发明实施例的实现Http反向代理的装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例中详细介绍了实现Http反向代理的技术方案,通过Java实现Http的反向代理,在本发明实施例中,实现反向代理之前,可以根据业务需求设计个性化的验证和操作,例如用户需要访问的内外页面有了权限控制,并且每个用户访问的反向代理地址不同。
以下是本发明实施例中涉及的技术术语的详细解释:
反向代理:(Reverse Proxy)是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
HttpClient:是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持Http协议的客户端编程工具包,并且它支持Http协议最新的版本和建议。
Servlethttp:包中定义了采用Http通信协议的HttpServlet类。
图1是根据本发明实施例的实现Http反向代理的方法的主要流程的示意图,如图1所示,本发明实施例的实现Http反向代理的方法主要包括如下流程:
步骤S101:接收Web用户的Http请求。本发明实施例的实现Http反向代理的技术方案基于通过Java实现的实现Http反向代理的装置完成,该实现Http反向代理的装置可以轻量级集成在各种Web系统中。例如可以是用于处理基于Presto(Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节)查询引擎的请求和/或基于Hadoop的请求,也可以是其他的公司内部系统中。
步骤S102:在验证Web用户的Http请求符合预设验证规则之后,查询Web用户对应的预设反向代理地址。本发明实施例中,在接收到用户的Http请求进行反向代理之前,可以根据业务需求,添加个性化涉及,根据预设验证规则对Web用户的Http请求进行验证。例如判断用户的访问目标服务器的权限,即以用户的账号密码验证登录,当然验证登录部分也可以增加或者完全替换为其它想实现反向代理之前的判断,例如验证根据用户增加的额外代理参数等。
验证通过之后,查询用户对应的提前配置好的代理的目标服务器的URL地址。该目标服务器的地址是根据不同用户进行提前配置的,可动态调整,配置完之后可以保存在用户数据库中,供反向代理时查询。例如用户1可以访问服务器是172.x.x.1,用户2可以访问172.x.x.2.这样不同用户在登录实现Http反向代理的装置时对应的服务器是不一样的。
在步骤S102完成验证和查询之后,从步骤S103进行反向代理。
步骤S103:根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器。
具体而言,可以包括如下步骤:
创建servletRequest对象,在servletRequest对象中封装接收到的Http请求;解析servletRequest对象,获取Http请求的方式、参数;创建DefaultHttpClient对象实例,按照Http请求的方式、参数、头信息和对应的预设反向代理地址URL信息生成HttpRequest对象并发送至目标服务器;接收目标服务器返回的HttpResponse对象;解析HttpResponse对象,将从HttpResponse对象中获取的Http请求的响应结果和头信息赋值给servletResponse对象,以生成响应数据;把servletResponse对象中的响应数据回传给Web用户。
图2是根据本发明实施例的实现Http反向代理的方法中Http反向代理功能说明的示意图。以下结合图1和图2对本发明实施例的实现Http反向代理的方法中Http反向代理功能进行示例性说明。
1)用户1正常访问Web应用服务,实现Http反向代理的装置首先验证用户权限,判断用户1是否已经登录,若用户1未登录,则直接把用户请求转向Web系统的登录页面。
2)用户2正常访问web应用服务,实现Http反向代理的装置验证用户权限,判断用户2是否已经登录,若用户2已经登录,则从用户数据库中查询用户2的反向代理配置,根据查询到的反向代理配置把用户2的请求反向代理到应用服务器1,并将代理完成的信息返回给用户。
3)用户3正常访问web应用服务,实现Http反向代理的装置验证用户权限,判断用户3是否已经登录,若用户3已经登录,则从用户数据库中查询用户3的反向代理配置,根据查询到的反向代理配置把用户3的请求反向代理到应用服务器2,并将代理完成的信息返回给用户。
前述描述中提到,本发明实施例的实现Http反向代理的装置可以轻量级集成到现有的Web系统中,例如集成到基于Presto查询引擎的查询系统中。以下就以反向代理Presto查询请求、增加在反向代理之前的个性化实现为判断用户是否登录的权限控制操作为例,对本发明实施例的实现Http反向代理的技术方案的详细介绍。相应地,本发明中的实现Http反向代理的装置可以成为PrestoProxyServlet容器,实现类似HttpServlet功能,它实质是通过Java设计出的反向代理程序,也可以集成到其他Web系统中。
1)PrestoProxyServlet容器继承了HttpServlet,支持Java的标准Web服务,并实现了主要的反向代理功能。
2)当Web客户端向应用服务器A发送某一请求,此时应用服务器A需要将请求转发给应用服务器B或C来处理请求,并将处理结果通过服务器A返回给浏览器客户端,这就像反向代理的过程(此处的“应用服务器A”对外表现为Web应用服务的反向代理模块,此处的应用服务器B、C,相当于图2的应用服务器1、应用服务器2)。在本发明实施例中,应用服务器B和C可以但不限于是以REST接口对外暴露服务的,即可以通过Http直接访问服务,因此选用HttpClient来模拟客户端请求并进行转发。对于客户端请求,可以有get、post、put和delete中的一种或几种,每一个请求对应到DefaultHttpClient中都有相应的包装类。
3)PrestoProxyServlet类覆盖HttpServlet的init()、service()和destroy()的3个方法,其中init()方法是在Web服务器启动初始化时调用,实例化一个DefaultHttpClient的对象实例,并且设置Http请求头基本参数信息。service()方法是每次用户Http请求都会调用的,本发明实施例中,首先通过session中存储的用户登录标记判断用户是否登录,用户未登录,则跳转到登录页面,用户已经登录则查询获取用户数据库中配置的代理的目标服务器的URL地址。
然后通过PrestoProxyServlet容器内置的servletRequest的对象实例的getMethod()方法获取用户请求的是post方式或get方式,通过PrestoProxyServlet容器内置的servletRequest对象实例的getRequestURI()方法获取用户请求的URI地址。通过以上获取到请求post方式或get方式,URL和URI的数据实例化一个反向代理HttpRequest对象的实例。然后通过PrestoProxyServlet容器内置的servletRequest对象的实例获取请求头信息,添加到反向代理HttpRequest对象的实例中。接下来调用DefaultHttpClient对象实例的execute()方法,参数是反向代理HttpRequest对象的实例。返回结果是反向代理请求结果,即反向代理HttpResponse对象的实例。然后把反向代理HttpResponse对象的实例的头信息、Cookie信息和OutputStream输出流信息赋值给内置的servletResponse对象的实例,整个流程正常执行完毕。
当反向代理服务停止时候调用destroy(),调用DefaultHttpClient对象的实例close()和shutdown()方法停止反向代理服务。
4)PrestoProxyServlet容器反向代理中,针对用户的每次请求可以在service()方法中先增加用户登录判断。此外,判断登录部分也可以增加或完全替换为其他自己想实现反向代理之前的判断规定。例如根据业务需求调整把登录改为根据用户增加额外代理参数。这是现有技术中其他反向代理服务无法实现的自定义个性化判断。
另外,本发明实施例中,还根据每个用户反向代理的地址不同,在用户登陆后,通过已经在系统中配置的反向代理地址,将用户请求代理至不同的反向代理地址。
至此,本发明实施例通过Java实现了Http反向代理,在代理服务执行之前可以灵活的扩展个性化业务需求,并实现轻量级的集成。
根据本发明实施例的实现Http反向代理的技术方案可以看出,因为采用通过Java实现Http反向代理功能的技术手段,所以克服了现有技术中无法根据业务需要自定义实现个性化判断和操作的技术问题,进而达到在支持基于Java的标准Web服务的同时,实现在反向代理之前自定义实现例如用户登录等个性化操作的技术效果;此外,通过根据用户权限动态配置反向代理地址,从而将用户请求反向代理到指定系统中;本发明实施例中的反向代理功能可以轻量级地集成到现有的Web系统中,从而可以简单灵活的通过Java实现包含个性化需求的反向代理服务,并且将基于Presto查询引擎、或者Hadoop平台、或者一些公司内部系统的Http请求反向代理至指定目标服务器;通过在反向代理之前验证用户权限,从而可以实现对反向代理地址访问权限的控制;通过在反向代理之前验证根据用户增加额外代理参数,从而可以根据不同业务需求实现不同的业务判断;通过根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址,从而可以实现对每个用户访问的目标服务器的地址的控制;通过在反向代理容器中创建DefaultHttpClient对象实例,并调用参数实现对目标服务器的访问,从而能够高效的实现对不同用户请求的反向代理功能。
图3是根据本发明实施例的实现Http反向代理的装置的主要模块的示意图。如图3所示,本发明实施例的实现Http反向代理的装置300主要包括如下模块:接收模块301、验证模块302以及定向代理模块303。
其中,接收模块301用于接收Web用户的Http请求;验证模块302用于在验证Web用户的Http请求符合预设验证规则之后,查询Web用户对应的预设反向代理地址;定向代理模块303用于根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器。
本发明实施例中,Http请求为基于Presto查询引擎的请求和/或基于Hadoop的请求,也可以是其他的基于公司内部系统的请求。
另外,验证模块302还可用于:验证Web用户的访问权限符合预设权限规则;和/或根据业务需求验证Web用户的代理参数符合预设代理参数规则。
本发明实施例中,预设反向代理地址是指根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址。
本发明实施例的定向代理模块303还可用于:创建servletRequest对象,在servletRequest对象中封装接收到的Http请求;解析servletRequest对象,获取Http请求的方式、参数;创建DefaultHttpClient对象实例,按照Http请求的方式、参数、头信息和对应的预设反向代理地址URL信息生成HttpRequest对象并发送至目标服务器;接收目标服务器返回的HttpResponse对象;解析HttpResponse对象,将从HttpResponse对象中获取的Http请求的响应结果和头信息赋值给servletResponse对象,以生成响应数据;把servletResponse对象中的响应数据回传给Web用户。
从以上描述可以看出,因为采用通过Java实现Http反向代理功能的技术手段,所以克服了现有技术中无法根据业务需要自定义实现个性化判断和操作的技术问题,进而达到在支持基于Java的标准Web服务的同时,实现在反向代理之前自定义实现例如用户登录等个性化操作的技术效果;此外,通过根据用户权限动态配置反向代理地址,从而将用户请求反向代理到指定系统中;本发明实施例中的反向代理功能可以轻量级地集成到现有的Web系统中,从而可以简单灵活的通过Java实现包含个性化需求的反向代理服务,并且将基于Presto查询引擎、或者Hadoop平台、或者一些公司内部系统的Http请求反向代理至指定目标服务器;通过在反向代理之前验证用户权限,从而可以实现对反向代理地址访问权限的控制;通过在反向代理之前验证根据用户增加额外代理参数,从而可以根据不同业务需求实现不同的业务判断;通过根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址,从而可以实现对每个用户访问的目标服务器的地址的控制;通过在反向代理容器中创建DefaultHttpClient对象实例,并调用参数实现对目标服务器的访问,从而能够高效的实现对不同用户请求的反向代理功能。
图4示出了可以应用本发明实施例的实现Http反向代理方法或实现Http反向代理装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯用户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱用户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的实现Http反向代理方法一般由服务器405执行,相应地,实现Http反向代理装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、验证模块以及定向代理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“接收Web用户的Http请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收Web用户的Http请求;在验证Web用户的Http请求符合预设验证规则之后,查询Web用户对应的预设反向代理地址;根据预设反向代理地址将Web用户的Http请求反向代理至目标服务器。
根据本发明实施例的技术方案,因为采用通过Java实现Http反向代理功能的技术手段,所以克服了现有技术中无法根据业务需要自定义实现个性化判断和操作的技术问题,进而达到在支持基于Java的标准Web服务的同时,实现在反向代理之前自定义实现例如用户登录等个性化操作的技术效果;此外,通过根据用户权限动态配置反向代理地址,从而将用户请求反向代理到指定系统中;本发明实施例中的反向代理功能可以轻量级地集成到现有的Web系统中,从而可以简单灵活的通过Java实现包含个性化需求的反向代理服务,并且将基于Presto查询引擎、或者Hadoop平台、或者一些公司内部系统的Http请求反向代理至指定目标服务器;通过在反向代理之前验证用户权限,从而可以实现对反向代理地址访问权限的控制;通过在反向代理之前验证根据用户增加额外代理参数,从而可以根据不同业务需求实现不同的业务判断;通过根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址,从而可以实现对每个用户访问的目标服务器的地址的控制;通过在反向代理容器中创建DefaultHttpClient对象实例,并调用参数实现对目标服务器的访问,从而能够高效的实现对不同用户请求的反向代理功能。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种实现Http反向代理的方法,其特征在于,包括:
接收Web用户的Http请求;
在验证所述Web用户的Http请求符合预设验证规则之后,查询所述Web用户对应的预设反向代理地址;
根据所述预设反向代理地址将所述Web用户的Http请求反向代理至目标服务器。
2.根据权利要求1所述的方法,其特征在于,所述Http请求为基于Presto查询引擎的请求和/或基于Hadoop的请求。
3.根据权利要求1所述的方法,其特征在于,验证所述Web用户的Http请求符合预设验证规则包括:验证所述Web用户的访问权限符合预设权限规则;和/或
根据业务需求验证所述Web用户的代理参数符合预设代理参数规则。
4.根据权利要求1所述的方法,其特征在于,所述预设反向代理地址是指根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址。
5.根据权利要求1所述的方法,其特征在于,根据所述预设反向代理地址将所述Web用户的Http请求反向代理至目标服务器包括:
创建servletRequest对象,在所述servletRequest对象中封装接收到的Http请求;
解析servletRequest对象,获取所述Http请求的方式、参数;
创建DefaultHttpClient对象实例,按照所述Http请求的方式、参数、头信息和对应的预设反向代理地址URL信息生成HttpRequest对象并发送至目标服务器;
接收所述目标服务器返回的HttpResponse对象;
解析所述HttpResponse对象,将从所述HttpResponse对象中获取的Http请求的响应结果和头信息赋值给servletResponse对象,以生成响应数据;
把servletResponse对象中的响应数据回传给Web用户。
6.一种实现Http反向代理的装置,其特征在于,包括:
接收模块,用于接收Web用户的Http请求;
验证模块,用于在验证所述Web用户的Http请求符合预设验证规则之后,查询所述Web用户对应的预设反向代理地址;
定向代理模块,用于根据所述预设反向代理地址将所述Web用户的Http请求反向代理至目标服务器。
7.根据权利要求6所述的装置,其特征在于,所述Http请求为基于Presto查询引擎的请求和/或基于Hadoop的请求。
8.根据权利要求6所述的装置,其特征在于,所述验证模块还用于:验证所述Web用户的访问权限符合预设权限规则;和/或
根据业务需求验证所述Web用户的代理参数符合预设代理参数规则。
9.根据权利要求6所述的装置,其特征在于,所述预设反向代理地址是指根据不同Web用户的权限为Web用户预先配置的、可动态调整的反向代理地址。
10.根据权利要求6所述的装置,其特征在于,所述定向代理模块还用于:
创建servletRequest对象,在所述servletRequest对象中封装接收到的Http请求;
解析servletRequest对象,获取所述Http请求的方式、参数;
创建DefaultHttpClient对象实例,按照所述Http请求的方式、参数、头信息和对应的预设反向代理地址URL信息生成HttpRequest对象并发送至目标服务器;
接收所述目标服务器返回的HttpResponse对象;
解析所述HttpResponse对象,将从所述HttpResponse对象中获取的Http请求的响应结果和头信息赋值给servletResponse对象,以生成响应数据;
把servletResponse对象中的响应数据回传给Web用户。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710542097.2A CN109218368B (zh) | 2017-07-05 | 2017-07-05 | 实现Http反向代理的方法、装置、电子设备和可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710542097.2A CN109218368B (zh) | 2017-07-05 | 2017-07-05 | 实现Http反向代理的方法、装置、电子设备和可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109218368A true CN109218368A (zh) | 2019-01-15 |
CN109218368B CN109218368B (zh) | 2021-09-07 |
Family
ID=64993043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710542097.2A Active CN109218368B (zh) | 2017-07-05 | 2017-07-05 | 实现Http反向代理的方法、装置、电子设备和可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109218368B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110138779A (zh) * | 2019-05-16 | 2019-08-16 | 全知科技(杭州)有限责任公司 | 一种基于多协议反向代理的Hadoop平台安全管控方法 |
CN110493318A (zh) * | 2019-07-23 | 2019-11-22 | 北京字节跳动网络技术有限公司 | Http请求信息的处理方法、装置、介质和设备 |
CN111416813A (zh) * | 2020-03-16 | 2020-07-14 | 山东浪潮通软信息科技有限公司 | 一种基于反向代理服务的数据过滤系统及实现方法 |
CN111555963A (zh) * | 2020-04-30 | 2020-08-18 | 北京思特奇信息技术股份有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN112491940A (zh) * | 2019-09-12 | 2021-03-12 | 北京京东振世信息技术有限公司 | 代理服务器的请求转发方法及装置、存储介质及电子设备 |
CN112995180A (zh) * | 2021-03-02 | 2021-06-18 | 吕静贤 | 一种降低越权漏洞风险的企业微信应用代理系统 |
CN113746941A (zh) * | 2021-11-04 | 2021-12-03 | 深圳市明源云采购科技有限公司 | 解除限制第三方cookie的方法、设备及存储介质 |
CN113966604A (zh) * | 2019-06-21 | 2022-01-21 | 微软技术许可有限责任公司 | web应用封装器 |
CN113992749A (zh) * | 2021-10-08 | 2022-01-28 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
CN114285659A (zh) * | 2021-12-28 | 2022-04-05 | 深圳市酷开网络科技股份有限公司 | 一种反向代理方法、装置、设备及存储介质 |
CN114500537A (zh) * | 2022-03-24 | 2022-05-13 | 杭州博盾习言科技有限公司 | 容器服务的访问方法、系统、存储介质及电子设备 |
CN115348310A (zh) * | 2022-08-17 | 2022-11-15 | 中国电信股份有限公司 | 反向代理方法、装置、系统、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753606A (zh) * | 2008-12-03 | 2010-06-23 | 北京天融信科技有限公司 | 一种实现web反向代理的方法 |
CN104184774A (zh) * | 2013-05-24 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种基于沙箱环境的信息处理方法和系统 |
CN104468248A (zh) * | 2013-09-16 | 2015-03-25 | 腾讯科技(深圳)有限公司 | 业务性能的监控方法、反向代理服务器、统计分析服务器及系统 |
CN105100263A (zh) * | 2015-08-20 | 2015-11-25 | 百度在线网络技术(北京)有限公司 | 一种反向代理方法及装置 |
CN105721420A (zh) * | 2015-12-11 | 2016-06-29 | 中国地质调查局发展研究中心 | 访问权限控制方法和反向代理服务器 |
-
2017
- 2017-07-05 CN CN201710542097.2A patent/CN109218368B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753606A (zh) * | 2008-12-03 | 2010-06-23 | 北京天融信科技有限公司 | 一种实现web反向代理的方法 |
CN104184774A (zh) * | 2013-05-24 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种基于沙箱环境的信息处理方法和系统 |
CN104468248A (zh) * | 2013-09-16 | 2015-03-25 | 腾讯科技(深圳)有限公司 | 业务性能的监控方法、反向代理服务器、统计分析服务器及系统 |
CN105100263A (zh) * | 2015-08-20 | 2015-11-25 | 百度在线网络技术(北京)有限公司 | 一种反向代理方法及装置 |
CN105721420A (zh) * | 2015-12-11 | 2016-06-29 | 中国地质调查局发展研究中心 | 访问权限控制方法和反向代理服务器 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110138779A (zh) * | 2019-05-16 | 2019-08-16 | 全知科技(杭州)有限责任公司 | 一种基于多协议反向代理的Hadoop平台安全管控方法 |
CN113966604A (zh) * | 2019-06-21 | 2022-01-21 | 微软技术许可有限责任公司 | web应用封装器 |
CN110493318A (zh) * | 2019-07-23 | 2019-11-22 | 北京字节跳动网络技术有限公司 | Http请求信息的处理方法、装置、介质和设备 |
CN110493318B (zh) * | 2019-07-23 | 2022-03-15 | 北京字节跳动网络技术有限公司 | Http请求信息的处理方法、装置、介质和设备 |
CN112491940B (zh) * | 2019-09-12 | 2024-05-24 | 北京京东振世信息技术有限公司 | 代理服务器的请求转发方法及装置、存储介质及电子设备 |
CN112491940A (zh) * | 2019-09-12 | 2021-03-12 | 北京京东振世信息技术有限公司 | 代理服务器的请求转发方法及装置、存储介质及电子设备 |
CN111416813A (zh) * | 2020-03-16 | 2020-07-14 | 山东浪潮通软信息科技有限公司 | 一种基于反向代理服务的数据过滤系统及实现方法 |
CN111555963B (zh) * | 2020-04-30 | 2022-08-16 | 北京思特奇信息技术股份有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN111555963A (zh) * | 2020-04-30 | 2020-08-18 | 北京思特奇信息技术股份有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN112995180A (zh) * | 2021-03-02 | 2021-06-18 | 吕静贤 | 一种降低越权漏洞风险的企业微信应用代理系统 |
CN113992749A (zh) * | 2021-10-08 | 2022-01-28 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
CN113992749B (zh) * | 2021-10-08 | 2024-05-14 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
CN113746941A (zh) * | 2021-11-04 | 2021-12-03 | 深圳市明源云采购科技有限公司 | 解除限制第三方cookie的方法、设备及存储介质 |
CN114285659A (zh) * | 2021-12-28 | 2022-04-05 | 深圳市酷开网络科技股份有限公司 | 一种反向代理方法、装置、设备及存储介质 |
CN114285659B (zh) * | 2021-12-28 | 2024-05-24 | 深圳市酷开网络科技股份有限公司 | 一种反向代理方法、装置、设备及存储介质 |
CN114500537A (zh) * | 2022-03-24 | 2022-05-13 | 杭州博盾习言科技有限公司 | 容器服务的访问方法、系统、存储介质及电子设备 |
CN115348310A (zh) * | 2022-08-17 | 2022-11-15 | 中国电信股份有限公司 | 反向代理方法、装置、系统、电子设备及存储介质 |
CN115348310B (zh) * | 2022-08-17 | 2024-06-07 | 中国电信股份有限公司 | 反向代理方法、装置、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109218368B (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109218368A (zh) | 实现Http反向代理的方法、装置、电子设备和可读介质 | |
US11546331B2 (en) | Credential and authentication management in scalable data networks | |
US11805180B2 (en) | Native activity tracking using credential and authentication management in scalable data networks | |
US11936652B2 (en) | Proxied multi-factor authentication using credential and authentication management in scalable data networks | |
US9497274B2 (en) | Extending functionality of web-based applications | |
US9547626B2 (en) | Systems, methods, and media for managing ambient adaptability of web applications and web services | |
US11799841B2 (en) | Providing intercommunication within a system that uses disparate authentication technologies | |
CN109150978A (zh) | 调试微服务的方法和装置 | |
CN106209726B (zh) | 一种移动应用单点登录方法及装置 | |
US20120210011A1 (en) | Apparatus and methods for access solutions to wireless and wired networks | |
CN110958237A (zh) | 一种权限校验的方法和装置 | |
CN109150904A (zh) | 接口服务调用方法及终端设备 | |
US7984170B1 (en) | Cross-domain communication in domain-restricted communication environments | |
CN110120917A (zh) | 基于内容的路由方法及装置 | |
CN108574604A (zh) | 测试方法和装置 | |
CN104618449A (zh) | 一种实现web单点登录的方法及装置 | |
US11811884B1 (en) | Topic subscription provisioning for communication protocol | |
CN106980501A (zh) | 一种软件包管理方法、装置和系统 | |
CN109936605A (zh) | 一种加载接口数据的方法和装置 | |
CN110070394A (zh) | 数据处理方法、系统、介质和计算设备 | |
CN109450890A (zh) | 单点登录的方法和装置 | |
CN108021564A (zh) | 一种页面重定向的方法和设备 | |
CN108880923A (zh) | 应用于应用服务器的监控操作请求的方法和装置 | |
CN112015383A (zh) | 一种登录方法和装置 | |
CN111241504B (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 |