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

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

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