国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

      文檔序號:12493541閱讀:410來源:國知局
      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/組播/安全防護(hù)等各功能的具體執(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ù)器進(jìn)行反向代理,Nginx和上游服務(wù)器的上下游報文都需要經(jīng)過系統(tǒng)協(xié)議棧。Nginx通過AF_INET域套接字和上游服務(wù)器進(jìn)行反向代理,Nginx和上游服務(wù)器的上下游報文都需要經(jīng)過系統(tǒng)協(xié)議棧?;蛘?,Nginx通過AF_LOCAL/AF_UNIX域套接字和上游服務(wù)器進(jìn)行反向代理,Nginx和上游服務(wù)器的上下游報文不需要經(jīng)過系統(tǒng)協(xié)議棧,經(jīng)過IPC(Inter-Process Communication,進(jìn)程間通信)機(jī)制進(jìn)行報文傳遞。

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

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

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

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

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



      技術(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ā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dā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)存,負(fù)責(zé)代理數(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ù)面意義相同,管理平面與管理面意義相同。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      詳細(xì)說,本發(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)存申請一條連接資源,并標(biāo)記為“新連接”;

      管理面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ū)域,并標(biāo)記為“新數(shù)據(jù)到達(dá)”;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      本發(fā)明進(jìn)一步提出一種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ù)。

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

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

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

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

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

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

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

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

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

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

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

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

      在多核處理器上每個核心上面可以啟動一個數(shù)據(jù)面Nginx代理進(jìn)程,有效提高連接并發(fā)數(shù)量。Nginx代理進(jìn)程運行在數(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ā)明做出各種改進(jìn),這仍落在本發(fā)明的保護(hù)范圍之內(nèi)。

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