什麼是 Web 伺服器?

在本文中,我們將解釋什麼是 Web 伺服器、Web 伺服器如何工作以及它們為什麼重要。

預備知識 您應該已經瞭解 網際網路如何工作,並且 理解網頁、網站、Web 伺服器和搜尋引擎之間的區別
目標 您將瞭解什麼是 Web 伺服器,並對其工作原理有一個大致的瞭解。

總結

Web 伺服器 這個詞可以指代硬體、軟體,或者兩者協同工作。

  1. 在硬體方面,Web 伺服器是一臺儲存 Web 伺服器軟體和網站組成檔案(例如,HTML 文件、圖片、CSS 樣式表和 JavaScript 檔案)的計算機。Web 伺服器連線到網際網路,並支援與其他連線到 Web 的裝置進行物理資料交換。
  2. 在軟體方面,Web 伺服器包含多個部分,用於控制 Web 使用者如何訪問託管檔案。至少,這是一個HTTP 伺服器。HTTP 伺服器是一種理解 URL(網址)和 HTTP(您的瀏覽器用來檢視網頁的協議)的軟體。可以透過其儲存的網站的域名訪問 HTTP 伺服器,它將這些託管網站的內容傳送到終端使用者的裝置。

最基本地說,當瀏覽器需要 Web 伺服器上託管的檔案時,瀏覽器會透過 HTTP 請求該檔案。當請求到達正確的(硬體)Web 伺服器時,(軟體)HTTP 伺服器會接受請求,找到請求的文件,並透過 HTTP 將其傳送回瀏覽器。(如果伺服器找不到請求的文件,它會返回一個 404 響應。)

Basic representation of a client/server connection through HTTP

要釋出網站,您需要靜態或動態 Web 伺服器。

靜態 Web 伺服器(或堆疊)包括一臺計算機(硬體)和一個 HTTP 伺服器(軟體)。我們稱之為“靜態”,因為它會將託管的檔案按原樣傳送到您的瀏覽器。

動態 Web 伺服器包括一個靜態 Web 伺服器以及額外的軟體,最常見的是應用程式伺服器資料庫。我們稱之為“動態”,因為它會在將內容透過 HTTP 伺服器傳送到您的瀏覽器之前,應用程式伺服器會更新託管的檔案。

例如,為了生成您在瀏覽器中看到的最終網頁,應用程式伺服器可能會用資料庫中的內容填充 HTML 模板。MDN 或 Wikipedia 等網站有數千個網頁。通常,這類網站由少數 HTML 模板和龐大的資料庫組成,而不是成千上萬個靜態 HTML 文件。這種設定使得維護和交付內容更加容易。

深入探討

總結一下:要獲取網頁,您的瀏覽器會向 Web 伺服器傳送請求,Web 伺服器會在其儲存空間中搜索請求的檔案。找到檔案後,伺服器會讀取它,根據需要進行處理,然後將其傳送到瀏覽器。讓我們更詳細地瞭解這些步驟。

託管檔案

首先,Web 伺服器必須儲存網站的檔案,即所有 HTML 文件及其相關資產,包括圖片、CSS 樣式表、JavaScript 檔案、字型和影片。

嚴格來說,您可以將所有這些檔案託管在自己的計算機上,但將檔案全部儲存在專用的 Web 伺服器上要方便得多,因為

  • 專用 Web 伺服器通常可用性更高(正常執行)。
  • 排除停機時間和系統故障,專用 Web 伺服器始終連線到網際網路。
  • 專用 Web 伺服器可以一直擁有相同的 IP 地址。這被稱為專用 IP 地址。(並非所有 ISP 都為家庭線路提供固定的 IP 地址。)
  • 專用 Web 伺服器通常由第三方維護。

鑑於所有這些原因,找到一個好的託管提供商是構建您的網站的關鍵部分。研究公司提供的各種服務。選擇一個符合您的需求和預算的服務。(服務範圍從免費到每月數千美元不等。)您可以在本文中找到更多詳細資訊。

獲得 Web 託管服務後,您必須 將檔案上傳到您的 Web 伺服器

透過 HTTP 進行通訊

其次,Web 伺服器提供對 HTTP(超文字傳輸協議)的支援。顧名思義,HTTP 指定了兩個計算機之間如何傳輸超文字(連結的 Web 文件)。

協議是兩臺計算機之間通訊的一組規則。HTTP 是一種文字、無狀態協議。

文字

所有命令都是純文字且人類可讀。

無狀態

伺服器和客戶端都不會記住先前的通訊。例如,僅依靠 HTTP,伺服器無法記住您輸入的密碼或您在未完成的交易中的進度。您需要應用程式伺服器來執行此類任務。(我們將在其他文章中介紹這類技術。)

HTTP 提供了客戶端和伺服器如何通訊的清晰規則。如果您想了解更多資訊,可以閱讀 HTTP 文件。目前,有幾點需要牢記

  • 客戶端伺服器傳送 HTTP 請求。伺服器響應客戶端的 HTTP 請求。
  • 透過 HTTP 請求檔案時,客戶端必須提供檔案的 URL
  • Web 伺服器必須回答每一個 HTTP 請求,至少附帶一條錯誤訊息。

在 Web 伺服器上,HTTP 伺服器負責處理和響應傳入的請求。

  1. 收到請求後,HTTP 伺服器會檢查請求的 URL 是否與現有檔案匹配。
  2. 如果匹配,Web 伺服器會將檔案內容傳送回瀏覽器。如果不匹配,伺服器會檢查它是否應為該請求動態生成檔案(請參閱 靜態與動態內容)。
  3. 如果以上兩種選項都不可行,Web 伺服器會向瀏覽器返回一條錯誤訊息,最常見的是 404 Not Found。404 錯誤非常普遍,以至於一些 Web 設計師花費大量時間和精力來設計 404 錯誤頁面。 MDN 404 頁面作為此類錯誤頁面的示例

靜態與動態內容

粗略地說,伺服器可以提供靜態或動態內容。請記住,靜態意味著“按原樣提供”。靜態網站最容易設定,因此我們建議您將第一個網站設定為靜態網站。

動態意味著伺服器會處理內容,甚至從資料庫中即時生成內容。這種方法提供了更大的靈活性,但技術堆疊更復雜,這使得構建網站的難度大大增加。

無法為所有可能的用例推薦一個現成的應用程式伺服器作為最佳解決方案。一些應用程式伺服器旨在託管和管理部落格、維基或電子商務解決方案,而另一些則更通用。如果您正在構建動態網站,請花時間研究您的需求並找到最適合您需求的技術。

大多數網站開發人員不需要從頭開始建立應用程式伺服器,因為有大量的現成解決方案,其中許多都可以高度配置。但是,如果您確實需要建立自己的伺服器,那麼您可能需要使用伺服器框架,利用其現有的程式碼和庫,並僅擴充套件您需要的那些部分以滿足您的用例。只有相對少數的開發人員需要從頭開始完全開發伺服器:例如,為了滿足嵌入式系統上的嚴格資源限制。如果您想嘗試構建伺服器,請檢視 伺服器端網站程式設計 學習路徑中的資源。

後續步驟

現在您已經熟悉了 Web 伺服器,您可以