亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Nginx上游代理服務(wù)系統(tǒng)及實現(xiàn)方法與流程

文檔序號:12493541閱讀:411來源:國知局
Nginx上游代理服務(wù)系統(tǒng)及實現(xiàn)方法與流程

本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,特別是涉及一種Nginx上游代理服務(wù)系統(tǒng)及實現(xiàn)方法。



背景技術(shù):

多核時代的網(wǎng)絡(luò)安全設(shè)備一般區(qū)分管理面和數(shù)據(jù)面,管理面是提供給網(wǎng)絡(luò)管理人員使用Telnet、Web、SSH、SNMP等方式來管理設(shè)備,數(shù)據(jù)面的基本任務(wù)是處理和轉(zhuǎn)發(fā)不同端口上各種類型的數(shù)據(jù),例如L2/L3/ACL/Qos/組播/安全防護等各功能的具體執(zhí)行過程,都屬于數(shù)據(jù)轉(zhuǎn)發(fā)平面的任務(wù)范疇。

Nginx("engine x")是一個高性能的HTTP和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP代理服務(wù)器。Nginx在Linux上使用epoll異步非阻塞模型高效的處理了TCP請求,是數(shù)據(jù)面實現(xiàn)HTTP請求的代理轉(zhuǎn)發(fā)首選。

現(xiàn)有技術(shù)中一般通過數(shù)據(jù)面Nginx服務(wù)器,監(jiān)聽到某一個或幾個端口提供Web服務(wù),客戶端通過數(shù)據(jù)面快速協(xié)議棧處理連接到Nginx。Nginx通過AF_INET域套接字和上游服務(wù)器進行反向代理,Nginx和上游服務(wù)器的上下游報文都需要經(jīng)過系統(tǒng)協(xié)議棧。Nginx通過AF_INET域套接字和上游服務(wù)器進行反向代理,Nginx和上游服務(wù)器的上下游報文都需要經(jīng)過系統(tǒng)協(xié)議棧?;蛘撸琋ginx通過AF_LOCAL/AF_UNIX域套接字和上游服務(wù)器進行反向代理,Nginx和上游服務(wù)器的上下游報文不需要經(jīng)過系統(tǒng)協(xié)議棧,經(jīng)過IPC(Inter-Process Communication,進程間通信)機制進行報文傳遞。

因此,現(xiàn)有技術(shù)存在如下缺陷:

1、上下游報文系統(tǒng)協(xié)議棧處理,會對報文的轉(zhuǎn)發(fā)產(chǎn)生性能影響。

2、由于技術(shù)限制某些情形下,數(shù)據(jù)面Nginx不能和管理面基于AF_INET域套接字進行通信。

3、上下游報文需要通過內(nèi)核拷貝傳遞,多次拷貝影響效率且處理依賴內(nèi)核調(diào)度,應(yīng)用過濾控制困難。

4、由于技術(shù)限制某些情形下,數(shù)據(jù)面Nginx不能和管理面基于AF_LOCAL/AF_UNIX域套接字進行通信。



技術(shù)實現(xiàn)要素:

為了克服上述現(xiàn)有技術(shù)的缺陷,本發(fā)明要解決的技術(shù)問題是提供一種Nginx上游代理服務(wù)系統(tǒng)及實現(xiàn)方法。

為解決上述技術(shù)問題,本發(fā)明中提供一種Nginx上游代理服務(wù)系統(tǒng)實現(xiàn)方法,所述代理服務(wù)系統(tǒng)包括管理面代理服務(wù)模塊和數(shù)據(jù)面Nginx模塊,所述方法包括:

對所述管理面代理服務(wù)模塊和所述數(shù)據(jù)面Nginx模塊建立共享內(nèi)存;

將所述共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道;所述TCP連接載荷數(shù)據(jù)包括用戶的HTTP請求數(shù)據(jù)和上游服務(wù)器的HTTP響應(yīng)數(shù)據(jù)。

為解決上述技術(shù)問題,本發(fā)明還提供一種Nginx上游代理服務(wù)系統(tǒng),包括設(shè)置模塊、管理面代理服務(wù)模塊和數(shù)據(jù)面Nginx模塊;

所述設(shè)置模塊,用于對所述管理面代理服務(wù)模塊和所述數(shù)據(jù)面Nginx模塊建立共享內(nèi)存;

將所述共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道;所述TCP連接載荷數(shù)據(jù)包括用戶的HTTP請求數(shù)據(jù)和上游服務(wù)器的HTTP響應(yīng)數(shù)據(jù)。

本發(fā)明有益效果如下:

本發(fā)明中方法及系統(tǒng),通過使用共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道,有效提高了代理系統(tǒng)的數(shù)據(jù)轉(zhuǎn)發(fā)效率。

附圖說明

圖1是本發(fā)明實施例中Nginx上游代理服務(wù)系統(tǒng)的布局示意圖;

圖2是本發(fā)明實施例中具有多核心處理器的代理服務(wù)系統(tǒng)的結(jié)構(gòu)示意圖。

具體實施方式

為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種Nginx上游代理服務(wù)系統(tǒng)及實現(xiàn)方法,以下結(jié)合附圖以及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不限定本發(fā)明。

如圖1所示,本發(fā)明實施例中一種Nginx上游代理服務(wù)系統(tǒng)實現(xiàn)方法,所述代理服務(wù)系統(tǒng)包括管理面代理服務(wù)模塊和數(shù)據(jù)面Nginx模塊,所述方法包括:

對所述管理面代理服務(wù)模塊和所述數(shù)據(jù)面Nginx模塊建立共享內(nèi)存;

將所述共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道;所述TCP連接載荷數(shù)據(jù)包括用戶的HTTP請求數(shù)據(jù)和上游服務(wù)器的HTTP響應(yīng)數(shù)據(jù)。

具體說,數(shù)據(jù)面Nginx模塊:運行于一個或多個數(shù)據(jù)面處理核心,提供用戶連接管理,代理數(shù)據(jù)轉(zhuǎn)發(fā)。

共享內(nèi)存:數(shù)據(jù)面Nginx模塊和管理面Proxy程序的共享內(nèi)存,負責代理數(shù)據(jù)緩存??蛻舳艘粋€TCP連接對應(yīng)于共享內(nèi)存中一個存儲區(qū)域。

管理面代理服務(wù)模塊即管理面Proxy程序:管理面Apache的客戶端,每一個TCP連接都有一個對應(yīng)的Proxy和Apache連接,從共享內(nèi)存獲取數(shù)據(jù),發(fā)送給Apache;將Apache響應(yīng)數(shù)據(jù)通過共享內(nèi)存返回數(shù)據(jù)面Nginx。

管理面上游服務(wù)器:為用戶提供接入Web Portal。其中,圖中數(shù)據(jù)平面與數(shù)據(jù)面意義相同,管理平面與管理面意義相同。

進一步說,所述將所述共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道,包括:

所述數(shù)據(jù)面Nginx模塊接收到用戶Portal請求時,從所述共享內(nèi)存中申請一條承載通道,并標記為新連接;

所述管理面代理服務(wù)模塊掃描所述共享內(nèi)存,發(fā)現(xiàn)所述新連接的標記時,創(chuàng)建與上游服務(wù)器的本地連接。

具體說,所述所述數(shù)據(jù)面Nginx模塊接收到用戶Portal請求,包括:

所述所述數(shù)據(jù)面Nginx模塊在接收到用戶TCP請求時,與所述用戶建立TCP連接;

通過所述TCP連接,接收到所述用戶的首次HTTP請求時,解析所述首次HTTP請求為所述用戶Portal請求。

在上述實施例的基礎(chǔ)上,進一步提出上述實施例的變型實施例,在此需要說明的是,為了使描述簡要,在各變型實施例中僅描述與上述實施例的不同之處。

在本發(fā)明的一個實施例中,所述管理面代理服務(wù)模塊掃描所述共享內(nèi)存,發(fā)現(xiàn)所述新連接的標記時,創(chuàng)建與上游服務(wù)器的本地連接之后,還包括:

所述數(shù)據(jù)面Nginx模塊接收到用戶的HTTP請求數(shù)據(jù),將所述HTTP請求數(shù)據(jù)寫入所述承載通道,并標記為第一新數(shù)據(jù)到達;

所述管理面代理服務(wù)模塊輪詢所述本地連接,發(fā)現(xiàn)所述第一新數(shù)據(jù)到達的標記時,從所述承載通道中讀取所述HTTP請求數(shù)據(jù),并發(fā)送給上游服務(wù)器,以及接收所述上游服務(wù)器的HTTP響應(yīng)數(shù)據(jù),將所述HTTP響應(yīng)數(shù)據(jù)寫入所述承載通道,并標記第二新數(shù)據(jù)到達;

所述數(shù)據(jù)面Nginx模塊輪詢所述本地連接,發(fā)現(xiàn)所述第二新數(shù)據(jù)到達的標記時,從所述承載通道中讀取所述HTTP響應(yīng)數(shù)據(jù),并發(fā)送給用戶。

在本發(fā)明的另一個實施例中,所述管理面代理服務(wù)模塊掃描所述共享內(nèi)存,發(fā)現(xiàn)所述新連接的標記時,創(chuàng)建與上游服務(wù)器的本地連接之后,還包括:

所述管理面代理服務(wù)模塊探測到所述上游服務(wù)器關(guān)閉本地連接時,在所述承載通道上設(shè)置第一關(guān)閉連接標記;

所述數(shù)據(jù)面Nginx模塊輪詢到所述第一關(guān)閉連接標記時,關(guān)閉與所述用戶的socket;

所述數(shù)據(jù)面Nginx模塊Nginx探測到所述用戶關(guān)閉TCP連接時,在承載通道上設(shè)置第二關(guān)閉連接標記;

所述管理面代理服務(wù)模塊輪詢到所述第二關(guān)閉連接標記時,關(guān)閉與上游服務(wù)器的本地連接。

在本發(fā)明的又一個實施例中,如圖2所示,所述代理服務(wù)器設(shè)置在具有多核心處理器的硬件平臺;

其中每個核心對應(yīng)一個數(shù)據(jù)面Nginx模塊。

詳細說,本發(fā)明中方法使用共享內(nèi)存作為數(shù)據(jù)TCP連接數(shù)據(jù)傳輸通道,其處理包括三個處理過程即連接建立過程、HTTP請求、響應(yīng)代理過程、連接關(guān)閉過程。

一、連接建立過程:

用戶發(fā)起TCP請求,和數(shù)據(jù)面Nginx服務(wù)器建立TCP連接;

用戶發(fā)送首次HTTP請求到數(shù)據(jù)面Nginx;

數(shù)據(jù)面Nginx解析HTTP請求,解析為用戶Portal請求,則從共享內(nèi)存申請一條連接資源,并標記為“新連接”;

管理面Proxy程序掃描共享內(nèi)存,發(fā)現(xiàn)有“新連接”則創(chuàng)建一條和上游服務(wù)器的本連接,并將HTTP請求發(fā)送給上游服務(wù)器;

上游處理HTTP請求,并產(chǎn)生HTTP響應(yīng),發(fā)送給Proxy代理程序;

Proxy代理程序收到HTTP響應(yīng),寫入該連接存儲區(qū)域,并標記為“新數(shù)據(jù)到達”;

數(shù)據(jù)面Nginx通過定時器輪詢連接,發(fā)現(xiàn)有“新數(shù)據(jù)到達”標記,獲取數(shù)據(jù)并發(fā)送給客戶端;

二、HTTP請求、響應(yīng)代理過程:

用戶在已建立的TCP連接上發(fā)送HTTP請求,數(shù)據(jù)面Nginx解析HTTP請求,并進行完整性校驗,校驗成功則寫入該連接存儲區(qū)域,并標記為“新數(shù)據(jù)到達”,校驗失敗,返回HTTP錯誤響應(yīng);

Proxy代理程序定時輪詢連接,發(fā)現(xiàn)有“新數(shù)據(jù)到達”標記,獲取數(shù)據(jù)并發(fā)送給上游服務(wù)器;

上游服務(wù)器處理HTTP請求,并產(chǎn)生HTTP響應(yīng),發(fā)送給Proxy代理程序;

Proxy代理程序收到HTTP響應(yīng),寫入該連接存儲區(qū)域,并標記為“新數(shù)據(jù)到達”;

數(shù)據(jù)面Nginx通過定時器輪詢連接,發(fā)現(xiàn)有“新數(shù)據(jù)到達”標記,獲取數(shù)據(jù)并發(fā)送給客戶端。

三、連接關(guān)閉過程:

上游服務(wù)器關(guān)閉本地連接,Proxy程序探測到,釋放和上游服務(wù)器的本地連接資源,在連接存儲區(qū)域上設(shè)置“關(guān)閉連接”標記,Nginx輪詢到“關(guān)閉連接”則關(guān)閉與用戶的socket,并釋放共享內(nèi)存中的連接資源;

同樣,用戶關(guān)閉與Nginx的TCP連接,Nginx探測到,釋放和客戶端的連接資源,在連接存儲區(qū)域上上設(shè)置“關(guān)閉連接”標記,Proxy程序輪詢到“關(guān)閉連接”標記則關(guān)閉與上游服務(wù)器的本地連接同時釋放共享內(nèi)存中的連接資源。

本發(fā)明通過使用共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道,有效提高了代理系統(tǒng)的數(shù)據(jù)轉(zhuǎn)發(fā)效率。

Proxy代理程序可以靈活的和不同上游服務(wù)器進行對接,比如Apache、Nginx、Lighthttpd等。

在多核處理器上每個核心上面可以啟動一個數(shù)據(jù)面Nginx代理進程,有效提高連接并發(fā)數(shù)量。Nginx代理進程運行在數(shù)據(jù)面協(xié)議棧之上,報文處理過程可繼承快速協(xié)議棧的性能優(yōu)勢。

通過數(shù)據(jù)面和管理面務(wù)配合為用戶接入提供WEB服務(wù),即利用了管理面全功能復(fù)雜業(yè)務(wù)處理的優(yōu)勢,也兼顧了數(shù)據(jù)面處理效率。

本發(fā)明進一步提出一種Nginx上游代理服務(wù)器。

本發(fā)明實施例中一種Nginx上游代理服務(wù)系統(tǒng),包括設(shè)置模塊、管理面代理服務(wù)模塊和數(shù)據(jù)面Nginx模塊;

所述設(shè)置模塊,用于對所述管理面代理服務(wù)模塊和所述數(shù)據(jù)面Nginx模塊建立共享內(nèi)存;

將所述共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道;所述TCP連接載荷數(shù)據(jù)包括用戶的HTTP請求數(shù)據(jù)和上游服務(wù)器的HTTP響應(yīng)數(shù)據(jù)。

進一步說,所述數(shù)據(jù)面Nginx模塊,用于接收到用戶Portal請求時,從所述共享內(nèi)存中申請一條承載通道,并標記為新連接;

所述管理面代理服務(wù)模塊,用于掃描所述共享內(nèi)存,發(fā)現(xiàn)所述新連接的標記時,創(chuàng)建與上游服務(wù)器的本地連接。

具體說,所述所述數(shù)據(jù)面Nginx模塊接收到用戶Portal請求,包括:

所述所述數(shù)據(jù)面Nginx模塊在接收到用戶TCP請求時,與所述用戶建立TCP連接;

通過所述TCP連接,接收到所述用戶的首次HTTP請求時,解析所述首次HTTP請求為所述用戶Portal請求。

進一步說,所述數(shù)據(jù)面Nginx模塊,還用于接收到用戶的HTTP請求數(shù)據(jù),將所述HTTP請求數(shù)據(jù)寫入所述承載通道,并標記為第一新數(shù)據(jù)到達;以及用于輪詢所述本地連接,發(fā)現(xiàn)所述第二新數(shù)據(jù)到達的標記時,從所述承載通道中讀取所述HTTP響應(yīng)數(shù)據(jù),并發(fā)送給用戶;

所述管理面代理服務(wù)模塊,還用于輪詢所述本地連接,發(fā)現(xiàn)所述第一新數(shù)據(jù)到達的標記時,從所述承載通道中讀取所述HTTP請求數(shù)據(jù),并發(fā)送給上游服務(wù)器,以及接收所述上游服務(wù)器的HTTP響應(yīng)數(shù)據(jù),將所述HTTP響應(yīng)數(shù)據(jù)寫入所述承載通道,并標記第二新數(shù)據(jù)到達。

進一步說,所述管理面代理服務(wù)模塊,還用于探測到所述上游服務(wù)器關(guān)閉本地連接時,在所述承載通道上設(shè)置第一關(guān)閉連接標記;以及輪詢到所述第二關(guān)閉連接標記時,關(guān)閉與上游服務(wù)器的本地連接;

所述數(shù)據(jù)面Nginx模塊,還用于輪詢到所述第一關(guān)閉連接標記時,關(guān)閉與所述用戶的socket;以及探測到所述用戶關(guān)閉TCP連接時,在承載通道上設(shè)置第二關(guān)閉連接標記。

其中,所述述代理服務(wù)系統(tǒng)設(shè)置在具有多核心處理器的硬件平臺;每個核心對應(yīng)一個數(shù)據(jù)面Nginx模塊。

本發(fā)明通過使用共享內(nèi)存作為TCP連接載荷數(shù)據(jù)的承載通道,有效提高了代理系統(tǒng)的數(shù)據(jù)轉(zhuǎn)發(fā)效率。

Proxy代理程序可以靈活的和不同上游服務(wù)器進行對接,比如Apache、Nginx、Lighthttpd等。

在多核處理器上每個核心上面可以啟動一個數(shù)據(jù)面Nginx代理進程,有效提高連接并發(fā)數(shù)量。Nginx代理進程運行在數(shù)據(jù)面協(xié)議棧之上,報文處理過程可繼承快速協(xié)議棧的性能優(yōu)勢。

通過數(shù)據(jù)面和管理面務(wù)配合為用戶接入提供WEB服務(wù),即利用了管理面全功能復(fù)雜業(yè)務(wù)處理的優(yōu)勢,也兼顧了數(shù)據(jù)面處理效率。

雖然本申請描述了本發(fā)明的特定示例,但本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明概念的基礎(chǔ)上設(shè)計出來本發(fā)明的變型。

本領(lǐng)域技術(shù)人員在本發(fā)明技術(shù)構(gòu)思的啟發(fā)下,在不脫離本發(fā)明內(nèi)容的基礎(chǔ)上,還可以對本發(fā)明做出各種改進,這仍落在本發(fā)明的保護范圍之內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1