Web 服務器是一種軟件或硬件(或兩者兼有),它們在基本級別上存儲內容并將其傳送到 Web 瀏覽器。服務器使用超文本傳輸??協議 (HTTP)與瀏覽器通信。Web 服務器還可以支持 SMTP(簡單郵件傳輸協議)和 FTP(文件傳輸協議)。?
Web 服務器還用于托管 Web 應用程序的網站和數據。他們可以使用虛擬化托管單個網站和多個網站。
為什么理解這個問題的答案很重要,Web 服務器是如何工作的?網站的成功不僅取決于其內容和功能,還取決于用于為其提供動力的 Web 服務器的效率。這需要了解 Web 服務器的功能和限制。在討論 Web 服務器的工作方式時,僅僅概述低級網絡數據包如何進出 Web 服務器的圖表是不夠的。
多年前,當 Web 服務器首次出現原型時,它們提供簡單的 HTML 文檔和圖像。今天,正如我們將在本教程后面介紹的那樣,它們經常用于更多用途。
第一步是將 Web 服務器視為一個黑匣子并提出以下問題:它是如何工作的;它可以實現什么?大多數 Internet 用戶認為網站的成功或失敗取決于其內容和功能,而不是用于為其提供支持的服務器,這是一個安全的假設。但是,選擇正確的服務器并了解其功能和局限性是通往成功之路的重要一步。
Web 服務器如何在內部工作?
當 Web 服務器收到對網頁內容的請求時,并將該統一資源定位符 (URL)映射到主機服務器上的本地文件。
在這種情況下,文件
索引.html
位于主機文件系統的某處。然后服務器從磁盤加載該文件,并通過網絡將其提供給用戶的 Web 瀏覽器。這整個交換是由瀏覽器和服務器使用 HTTP 相互通信來調解的。此工作流程如下圖所示。

這里的所有都是它的。但如果就這么簡單,那為什么要進行如此深入的教程呢?
因為這種允許向 Web 瀏覽器提供靜態內容(例如超文本標記語言 (HTML)和圖像文件)的簡單安排是我們現在稱為萬維網的最初概念。它的簡單之美在于它使瀏覽器和 Web 服務器之間的信息交換變得可能更加復雜。
也許對此最重要的擴展是動態內容的概念(即,直接或間接響應用戶輸入而創建的網頁)。最古老和最常用的標準是通用網關接口 (CGI)。這是一個相當無意義的名稱,但它基本上定義了 Web 服務器應該如何在本地運行程序并通過 Web 服務器將其輸出傳輸到請求動態內容的用戶 Web 瀏覽器。
出于所有意圖和目的,用戶的 Web 瀏覽器永遠不必真正知道內容是動態的,因為 CGI 基本上是 Web 服務器擴展協議。下圖顯示了當瀏覽器請求從 CGI 程序動態生成的頁面時會發生什么。

第二個重要的進步,也是使電子商務成為可能的進步,是引入了安全的超文本傳輸??協議 (HTTPS)。該協議允許在瀏覽器和 Web 服務器之間進行安全通信。
簡而言之,這意味著用戶和服務器通過可能被視為不安全的網絡相互傳輸敏感數據是安全的。然而,當數據到達任一端時會發生什么是另一回事,不應忽略。我們稍后會討論這個問題。
上述安排的簡單性具有欺騙性,低估其復雜性通常會導致對 Web 托管基礎設施的設計做出錯誤的決定。很容易將注意力集中在網頁本身的設計和用于創建動態內容的技術上,例如Java、Javascript、Perl、C/C++ 和 ASP,而隨后忽略了這些技術中的每一種都可以運行它們的平臺——Web 服務器本身——的幫助或阻礙。
換句話說,解釋 Web 服務器的工作原理不僅僅涉及討論 Web 服務器如何提供文檔。我們將討論以下主題,以找出現代 Web 服務器執行其活動的內容和方式。
我們將首先解釋 Web 服務器必須做什么的底層細節。然后,我們將討論圍繞使用 Web 服務器的問題以及它如何適應 Internet 的其他基礎設施元素的范圍。然后,我們將討論應用程序與 Web 服務器之間的關系。