Nginx上游代理服务系统及实现方法技术方案

技术编号:15519800 阅读:64 留言:0更新日期:2017-06-04 09:32
本发明专利技术公开了一种Nginx上游代理服务系统及实现方法,所述代理服务系统包括管理面代理服务模块和数据面Nginx模块,所述方法包括:对所述管理面代理服务模块和所述数据面Nginx模块建立共享内存;将所述共享内存作为TCP连接载荷数据的承载通道;所述TCP连接载荷数据包括用户的HTTP请求数据和上游服务器的HTTP响应数据。本发明专利技术中系统及方法通过使用共享内存作为TCP连接载荷数据的承载通道,有效提高了代理系统的数据转发效率。

Nginx upstream proxy service system and implementation method

The invention discloses a Nginx upstream proxy service system and implementation method, the proxy service system includes management agent service module and data Nginx module, the method includes: the establishment of the shared memory management service module and the data Nginx module; the load sharing channel memory as the TCP connection load data; the TCP is connected with the load data including the HTTP request data and the upstream server HTTP response data. In the invention, the system and the method use the shared memory as the carrying channel of the TCP connection load data, thereby effectively improving the data forwarding efficiency of the proxy system.

【技术实现步骤摘要】
Nginx上游代理服务系统及实现方法
本专利技术涉及网络安全领域,特别是涉及一种Nginx上游代理服务系统及实现方法。
技术介绍
多核时代的网络安全设备一般区分管理面和数据面,管理面是提供给网络管理人员使用Telnet、Web、SSH、SNMP等方式来管理设备,数据面的基本任务是处理和转发不同端口上各种类型的数据,例如L2/L3/ACL/Qos/组播/安全防护等各功能的具体执行过程,都属于数据转发平面的任务范畴。Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx在Linux上使用epoll异步非阻塞模型高效的处理了TCP请求,是数据面实现HTTP请求的代理转发首选。现有技术中一般通过数据面Nginx服务器,监听到某一个或几个端口提供Web服务,客户端通过数据面快速协议栈处理连接到Nginx。Nginx通过AF_INET域套接字和上游服务器进行反向代理,Nginx和上游服务器的上下游报文都需要经过系统协议栈。Nginx通过AF_INET域套接字和上游服务器进行反向代理,Nginx和上游服务器的上下游报文都需要经过系统协议栈。或者,Nginx通过AF_LOCAL/AF_UNIX域套接字和上游服务器进行反向代理,Nginx和上游服务器的上下游报文不需要经过系统协议栈,经过IPC(Inter-ProcessCommunication,进程间通信)机制进行报文传递。因此,现有技术存在如下缺陷:1、上下游报文系统协议栈处理,会对报文的转发产生性能影响。2、由于技术限制某些情形下,数据面Nginx不能和管理面基于AF_INET域套接字进行通信。3、上下游报文需要通过内核拷贝传递,多次拷贝影响效率且处理依赖内核调度,应用过滤控制困难。4、由于技术限制某些情形下,数据面Nginx不能和管理面基于AF_LOCAL/AF_UNIX域套接字进行通信。
技术实现思路
为了克服上述现有技术的缺陷,本专利技术要解决的技术问题是提供一种Nginx上游代理服务系统及实现方法。为解决上述技术问题,本专利技术中提供一种Nginx上游代理服务系统实现方法,所述代理服务系统包括管理面代理服务模块和数据面Nginx模块,所述方法包括:对所述管理面代理服务模块和所述数据面Nginx模块建立共享内存;将所述共享内存作为TCP连接载荷数据的承载通道;所述TCP连接载荷数据包括用户的HTTP请求数据和上游服务器的HTTP响应数据。为解决上述技术问题,本专利技术还提供一种Nginx上游代理服务系统,包括设置模块、管理面代理服务模块和数据面Nginx模块;所述设置模块,用于对所述管理面代理服务模块和所述数据面Nginx模块建立共享内存;将所述共享内存作为TCP连接载荷数据的承载通道;所述TCP连接载荷数据包括用户的HTTP请求数据和上游服务器的HTTP响应数据。本专利技术有益效果如下:本专利技术中方法及系统,通过使用共享内存作为TCP连接载荷数据的承载通道,有效提高了代理系统的数据转发效率。附图说明图1是本专利技术实施例中Nginx上游代理服务系统的布局示意图;图2是本专利技术实施例中具有多核心处理器的代理服务系统的结构示意图。具体实施方式为了解决现有技术的问题,本专利技术提供了一种Nginx上游代理服务系统及实现方法,以下结合附图以及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不限定本专利技术。如图1所示,本专利技术实施例中一种Nginx上游代理服务系统实现方法,所述代理服务系统包括管理面代理服务模块和数据面Nginx模块,所述方法包括:对所述管理面代理服务模块和所述数据面Nginx模块建立共享内存;将所述共享内存作为TCP连接载荷数据的承载通道;所述TCP连接载荷数据包括用户的HTTP请求数据和上游服务器的HTTP响应数据。具体说,数据面Nginx模块:运行于一个或多个数据面处理核心,提供用户连接管理,代理数据转发。共享内存:数据面Nginx模块和管理面Proxy程序的共享内存,负责代理数据缓存。客户端一个TCP连接对应于共享内存中一个存储区域。管理面代理服务模块即管理面Proxy程序:管理面Apache的客户端,每一个TCP连接都有一个对应的Proxy和Apache连接,从共享内存获取数据,发送给Apache;将Apache响应数据通过共享内存返回数据面Nginx。管理面上游服务器:为用户提供接入WebPortal。其中,图中数据平面与数据面意义相同,管理平面与管理面意义相同。进一步说,所述将所述共享内存作为TCP连接载荷数据的承载通道,包括:所述数据面Nginx模块接收到用户Portal请求时,从所述共享内存中申请一条承载通道,并标记为新连接;所述管理面代理服务模块扫描所述共享内存,发现所述新连接的标记时,创建与上游服务器的本地连接。具体说,所述所述数据面Nginx模块接收到用户Portal请求,包括:所述所述数据面Nginx模块在接收到用户TCP请求时,与所述用户建立TCP连接;通过所述TCP连接,接收到所述用户的首次HTTP请求时,解析所述首次HTTP请求为所述用户Portal请求。在上述实施例的基础上,进一步提出上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。在本专利技术的一个实施例中,所述管理面代理服务模块扫描所述共享内存,发现所述新连接的标记时,创建与上游服务器的本地连接之后,还包括:所述数据面Nginx模块接收到用户的HTTP请求数据,将所述HTTP请求数据写入所述承载通道,并标记为第一新数据到达;所述管理面代理服务模块轮询所述本地连接,发现所述第一新数据到达的标记时,从所述承载通道中读取所述HTTP请求数据,并发送给上游服务器,以及接收所述上游服务器的HTTP响应数据,将所述HTTP响应数据写入所述承载通道,并标记第二新数据到达;所述数据面Nginx模块轮询所述本地连接,发现所述第二新数据到达的标记时,从所述承载通道中读取所述HTTP响应数据,并发送给用户。在本专利技术的另一个实施例中,所述管理面代理服务模块扫描所述共享内存,发现所述新连接的标记时,创建与上游服务器的本地连接之后,还包括:所述管理面代理服务模块探测到所述上游服务器关闭本地连接时,在所述承载通道上设置第一关闭连接标记;所述数据面Nginx模块轮询到所述第一关闭连接标记时,关闭与所述用户的socket;所述数据面Nginx模块Nginx探测到所述用户关闭TCP连接时,在承载通道上设置第二关闭连接标记;所述管理面代理服务模块轮询到所述第二关闭连接标记时,关闭与上游服务器的本地连接。在本专利技术的又一个实施例中,如图2所示,所述代理服务器设置在具有多核心处理器的硬件平台;其中每个核心对应一个数据面Nginx模块。详细说,本专利技术中方法使用共享内存作为数据TCP连接数据传输通道,其处理包括三个处理过程即连接建立过程、HTTP请求、响应代理过程、连接关闭过程。一、连接建立过程:用户发起TCP请求,和数据面Nginx服务器建立TCP连接;用户发送首次HTTP请求到数据面Nginx;数据面Nginx解析HTTP请求,解析为用户Portal请求,则从共享内本文档来自技高网
...
Nginx上游代理服务系统及实现方法

【技术保护点】
一种Nginx上游代理服务系统实现方法,其特征在于,所述代理服务系统包括管理面代理服务模块和数据面Nginx模块,所述方法包括:对所述管理面代理服务模块和所述数据面Nginx模块建立共享内存;将所述共享内存作为TCP连接载荷数据的承载通道;所述TCP连接载荷数据包括用户的HTTP请求数据和上游服务器的HTTP响应数据。

【技术特征摘要】
1.一种Nginx上游代理服务系统实现方法,其特征在于,所述代理服务系统包括管理面代理服务模块和数据面Nginx模块,所述方法包括:对所述管理面代理服务模块和所述数据面Nginx模块建立共享内存;将所述共享内存作为TCP连接载荷数据的承载通道;所述TCP连接载荷数据包括用户的HTTP请求数据和上游服务器的HTTP响应数据。2.如权利要求1所述的方法,其特征在于,所述将所述共享内存作为TCP连接载荷数据的承载通道,包括:所述数据面Nginx模块接收到用户Portal请求时,从所述共享内存中申请一条承载通道,并标记为新连接;所述管理面代理服务模块扫描所述共享内存,发现所述新连接的标记时,创建与上游服务器的本地连接。3.如权利要求2所述的方法,其特征在于,所述所述数据面Nginx模块接收到用户Portal请求,包括:所述所述数据面Nginx模块在接收到用户TCP请求时,与所述用户建立TCP连接;通过所述TCP连接,接收到所述用户的首次HTTP请求时,解析所述首次HTTP请求为所述用户Portal请求。4.如权利要求2所述的方法,其特征在于,所述管理面代理服务模块扫描所述共享内存,发现所述新连接的标记时,创建与上游服务器的本地连接之后,还包括:所述数据面Nginx模块接收到用户的HTTP请求数据,将所述HTTP请求数据写入所述承载通道,并标记为第一新数据到达;所述管理面代理服务模块轮询所述本地连接,发现所述第一新数据到达的标记时,从所述承载通道中读取所述HTTP请求数据,并发送给上游服务器,以及接收所述上游服务器的HTTP响应数据,将所述HTTP响应数据写入所述承载通道,并标记第二新数据到达;所述数据面Nginx模块轮询所述本地连接,发现所述第二新数据到达的标记时,从所述承载通道中读取所述HTTP响应数据,并发送给用户。5.如权利要求2所述的方法,其特征在于,所述管理面代理服务模块扫描所述共享内存,发现所述新连接的标记时,创建与上游服务器的本地连接之后,还包括:所述管理面代理服务模块探测到所述上游服务器关闭本地连接时,在所述承载通道上设置第一关闭连接标记;所述数据面Nginx模块轮询到所述第一关闭连接标记时,...

【专利技术属性】
技术研发人员:郭春碌费恩达
申请(专利权)人:北京天融信网络安全技术有限公司北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1