web服務器 原理

web服務器                                                                               

 

  在開始瞭解Apache前,我們先熟悉一下web服務器,因爲apache也是web服務器的一種。

  Web系統由客戶端(瀏覽器)和服務器端兩部分組成。Web系統架構也被稱爲B/S架構。最常見的Web服務器有Apache、IIS等,常用的瀏覽器有IE、Firefox、chrome等。當你想訪問一個網頁時,需要在瀏覽器的地址欄中輸入該網頁的URL(Uniform Resource Locator,簡稱爲URL)地址,或者是通過超鏈接鏈接到該網頁。瀏覽器會向該網頁所在的服務器發送一個HTTP請求,服務器會對接收到的請求信息進行處理,然後將處理的結果返回給瀏覽器,最終將瀏覽器處理後的結果呈現給用戶。

 

web服務器端的工作流程

(1)客戶端發送請求

  客戶端(通過瀏覽器)和Web服務器建立TCP連接,連接建立以後,向Web服務器發出訪問請求(如get)。根據HTTP協議,該請求中包含了客戶端的IP地址、瀏覽器的類型和請求的URL等一系列信息。

(2)服務器解析請求

  Web服務器對請求按照HTTP協議進行解碼來確定進一步的動作,設計的內容有三鼐要點:方法(GET)、文檔(/sample.html)、和瀏覽器使用的協議(HTTP/1.1)其中方法告訴服務器應完動的動作,GET方法的含義很明顯是:服務器應定位、讀取文件並將它返回給客戶。

Web服務器軟件現在就知道了,它應該找到文件/sample.html,並使用HTTP/1.1協議將內存返回給客戶。信息是經過與請求到來相同的連接發出的,所以服務器不需要定們客戶或創建新的連接。

(3)讀取其它信息(非必須步驟)

    Web服務器根據需要去讀取請求的其它部分。在HTTP/1.1下,客戶還應給服務器提供關於它的一些信息。元信息(metainformation)可用來描述瀏覽器及其能力,以使服務器能據此確定如何返回應答。

(4)完成請求的動作

  若現在沒有錯誤出現,WWW服務器將執行請求所要求的動作。要獲取(GET)一個文檔,web服務器在其文檔樹中搜索請求的文件(/sample.html)。這是由服務器機器上作爲操作系統一部分的文件系統完成的。若文件能找到並可正常讀取,則服務器將把它返回給客戶。

如果成功:文件被髮送出去。

  首先,web服務器發送一個狀態碼及一些描述信息。既然文件已經找到,則發送狀態碼200,表示一切都OK ,文檔隨後發出,因爲發送的信息是HTML文檔,所以Content-type 取值爲text/html。文檔長爲1024個字節,所以Content-type 取1024 。服務器軟件的標識及文件的時間屬性信息也被包含在頭域中。

如果失敗:返回錯誤指示。

  如果請求的文件沒有找到或找到但無法讀取,測請求無法滿足。這時將返回不同於200的狀態碼。最常見的問題是請求中的文件名拼寫有誤,所以服務器無法找到該文件。這種情況下,服務器將發送一個狀態碼---404 給客戶。

(5)關閉文件和網絡連接,結束會話。

當文件已被髮郵或錯誤已發出後,web服務器結束整個會話。它關閉打開的的被請求文件,關閉網絡端口從而結束網絡連接。有關的其它工作則是由客戶端來完成的,包括接收數據,並以用戶可讀的方式呈現出來。這些與服務器無關。

 

 

apache架構                                                                             

 

  Apache 作爲歷史最悠久的web服務器,一直是web應用系統的首選,是世界上被廣泛應用的web 服務器軟件,它可以運行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的web服務器端軟件之一,也是流行架構LAMP的重要組成部分。

  作爲世界上最流行的Web服務器,Apache遵循的同樣是HTTP協議,默認端口號爲80。下面來是apache 架構圖。

Apache 特點:

 

  •   支持最新的HTTP/1.1通信協議。Apache是最先使用HTTP/1.1協議的Web服務器之一,它完全兼容HTTP/1.1協議並與HTTP/1.0協議向後兼容。Apache已爲新協議所提供的全部內容做好了必要的準備。
  •   支持多計算機平臺。Apache幾乎可以在所有的計算機操作系統上運行,包括主流的UNIX、Linux及Windows操作系統。
  •   配置文件簡單,易操作。用戶可以通過直接修改Apache的配置文件信息來修改Apache,操作起來十分方便。
  •   支持實時監視服務器狀態和定製服務器日誌。Apache在記錄日誌和監視服務器自身運行狀態方面提供了很大的靈活性,可以通過Web瀏覽器來監視服務器的狀態,也可以根據自己的需要來定製日誌。
  •   支持多種方式的HTTP認證。
  •   支持Web目錄修改。用戶可以使用特定的目錄作爲Web目錄。
  •   支持CGI腳本,如Perl、PHP等。
  •   支持服務器端包含指令(SSI)。
  •   支持安全Socket層(SSL)。
  •   支持FastCGI。
  •   支持虛擬主機。即通過在一臺服務器上使用不同的主機名來提供多個HTTP服務。Apache支持基於IP、主機名和端口號三種類型的虛擬主機服務。
  •   跟蹤用戶會話。當用戶瀏覽基於Apache的Web站點時,可以通過Apache的mod_usertrack模塊對其進行跟蹤。
  •   支持動態共享對象。Apache的模塊可在運行時動態加載,這就意味着這些模塊可以被裝入服務器進程空間,從而減少系統的內存開銷。
  •   支持多進程。當負載增加時,服務器會快速生成子進程來處理,從而提高系統的響應能力。
  •   支持第三方軟件開發商提供的功能模塊。比如Apache加載mod_jserv模塊後可以支持Java Servlet,這樣就可以運行Java應用程序了。
  •   支持多線程和多進程混合模型的MPM。 當MPM類型指定爲worker時,由於是使用線程來處理,所以可以處理海量的請求,而系統資源的開銷要小於基於進程的服務器。

 

Apache 工作模擬                                                    

 

  Apache 2.X  支持插入式並行處理模塊,稱爲多路處理模塊(MPM)。在編譯apache時必須選擇也只能選擇一個MPM,對類UNIX系統,有幾個不同的MPM可供選擇,它們會影響到apache的速度和可伸縮性。

  Worker MPM 使用多個子進程,每個子進程中又有多個線程。每個線程處理一個請求,該MPM通常對高流量的服務器是一個不錯的選擇。因爲它比prefork MPM需要更少的內存且更具有伸縮性。

  Prefork MPM : 使用多個子進程,但每個子進程不包含多線程。每個進程只處理一個連接。在許多系統上它的速度和worker MPM一樣快,但是需要更多的內存。這種無線程的設計在某些性況下優於worker MPM,因爲它可在應用於不具備線程安全的第三方模塊上(如 PHP3/4/5),且在不支持線程調試的平臺上易於調試,另外還具有比worker MPM更高的穩定性。 

   (後面會介紹如果這兩種模式以及apache更多的設置與監控等)

發佈了74 篇原創文章 · 獲贊 17 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章