把伺服器想成一個全年不打烊的服務櫃台,其實很接近它的真實樣貌。櫃台人員不會主動出去招呼客人,只會守在原位,等有人上前提出要求,再把對應的東西交出去;就算要找的東西根本不存在,也得回一句「沒有這一項」,不能沉默不理。網站背後那台機器做的事幾乎一模一樣,瀏覽器是提出要求的客人,伺服器就是櫃台。
網站如果是委外做的,這個櫃台平常不會出現在眼前,出狀況時卻常常是源頭。網站突然打不開、某天莫名變慢、要備份卻不知道該備哪些東西,答案多半落在伺服器那一端,例如網站放在哪一家主機供應商、跟多少網站共用同一台機器。弄懂伺服器怎麼運作,才分得清問題該找設計公司還是主機供應商。
伺服器是什麼?
多數人聽到「伺服器」,腦中浮現的畫面往往是機房裡一台規格特別強悍的電腦,好像跑分越高、風扇越大聲就越像伺服器。這個想像其實抓錯重點,伺服器跟你桌上的筆電、公司裡的桌機一樣都是電腦,差別在角色與運作方式,不在硬體規格。伺服器一天 24 小時開著,被動等待外部連線進來,不是設計給人坐在前面操作的機器。
Mozilla 維護的開發者文件庫 MDN 把這兩端的角色講得很清楚,客戶端(client)向伺服器發出 HTTP 請求,伺服器(server)負責回應客戶端的請求。你打開瀏覽器、輸入網址,那台電腦此刻就是客戶端,主動提出要某個檔案的要求;伺服器則永遠站在另一頭等著回答,而且它必須回應每一個進來的請求,最起碼也要回一則錯誤訊息,不能放著不理。
你的網站每天都在用伺服器,只是平常很少直接碰到這個詞。點開網站的瞬間,瀏覽器發出請求、伺服器接手回應,這一來一往在你完全沒察覺的情況下反覆發生。那些機器不需要螢幕和鍵盤也能正常運作,安靜運轉在機房裡,靠遠端連線來管理。
伺服器與個人電腦的本質差異
伺服器和你的筆電、桌機用的都是「電腦」這個詞,兩者的處理器、記憶體、儲存空間甚至可能等級相近,差別不是跑分高低,而是誰主動、誰被動,以及要不要一直開著。你的電腦平常做的事是主動出擊,打開瀏覽器找資料、開文書軟體打報告,做完就關機睡覺;伺服器的工作性質完全相反,它被動等在那裡,隨時準備接收外部連進來的請求,而且不能說關就關。你自己的電腦從一開始就不是設計來全年無休服務外部請求的機器,長時間開機、被動應答不是它的本業。
MDN 說明,把網站檔案放在專用伺服器上比放在自己電腦裡方便,理由有幾個。第一,專用伺服器通常更穩定可用,除了停機與系統故障之外,一直連在網際網路上;第二,可以一直使用同一個 IP 位址;第三,通常由第三方負責維護。這幾點對照起來就能看出一般家用網路為什麼不適合放網站。一般家用網路的位址可能會變動,並不是每家電信業者都提供固定 IP 給家庭用戶,加上家裡電腦難免要重開機、斷線、甚至硬體故障,沒辦法保證隨時連得上。這也是為什麼委外做網站的你,幾乎不會被要求自己準備一台機器,而是交給專門的主機供應商去處理,把伺服器該有的穩定性和維護責任,轉包給真正做這件事的人。
硬體機器與軟體程式共同構成伺服器
「伺服器」這個詞同時指兩種東西,一台實際存在、插著電源線連上網路的機器,以及在那台機器上執行、負責處理請求的程式。少了任何一邊,伺服器都不成立,光有機器沒有程式,它就只是一台閒置的電腦;光有程式沒有機器可以跑,程式也無處安身。
先看硬體,伺服器是一台電腦,存放伺服器軟體與網站檔案,那些檔案包括 HTML 文件、圖片、CSS 樣式表、JavaScript 檔案,而且這台機器要能跟其他連網設備交換資料。
再看軟體,伺服器是一連串程式,控制外部使用者如何存取這些檔案,其中至少要有一支 HTTP 伺服器程式,懂得處理網址與 HTTP 協定,它的工作是透過網域名稱把內容送到你眼前的裝置上。換句話說,一台主機裡同時在跑好幾種程式,不是只有一支程式包辦全部工作。這也是為什麼一個請求送進來的時候,實際負責接手處理的不是機器本身,而是機器上那支懂得看網址、看 HTTP 的程式。
瀏覽器發出請求後由伺服器接手回應

在網址列輸入網址、按下 Enter,瀏覽器就會發出一則 HTTP 請求。請求裡帶著要找的檔案位址,伺服器收到後,才能判斷你要的是哪一份檔案。
這跟前面提到的角色分工是同一件事的延伸,瀏覽器負責問,伺服器負責答。HTTP 這套協定有兩個特性。第一,指令全部是純文字,人看得懂;第二,它是無狀態的,伺服器跟瀏覽器都不會記得上一次溝通的內容,每一次請求都像重新開始的對話。

DNS 先把網域名稱翻譯成 IP 位址
瀏覽器不會直接拿你輸入的網址去找伺服器,中間還有一個把網域名稱換算成位址的步驟,完成這一步,瀏覽器才知道該往哪一台伺服器送出請求。
負責這件事的機制叫做網域名稱系統,英文縮寫 DNS(Domain Name System)。Cloudflare 把它形容成網際網路的電話簿,因為人類習慣用好記的網域名稱找資料,瀏覽器實際互動的對象卻是 IP 位址。每一台連上網路的裝置都有一個獨一無二的 IP 位址,DNS 的工作就是把網域名稱翻譯成 IP 位址,讓瀏覽器能載入你要的網路資源,你也不必自己背下那一長串數字。
伺服器先找現成檔案,其次即時產生,最後才回傳 404
位址翻譯完成、請求送到正確的伺服器之後,接下來就換伺服器動手。按照 MDN 的說明,伺服器會先檢查請求的網址是否對應到現有的檔案,對應得到,就把檔案內容回傳給瀏覽器;對應不到,會再判斷能不能為這個請求即時產生內容,兩條路都走不通,才回傳一則錯誤訊息,最常見的是「404 Not Found」。你在網路上偶爾會點到一個連結卻跳出找不到頁面的畫面,就是這個環節在起作用,代表伺服器找不到你要的檔案。

網站的內容,其實分成檔案與資料庫兩部分
伺服器送回瀏覽器的內容,分成兩種完全不同的處理邏輯。一種只把「事先寫好」的檔案原封不動送出去,你要的是哪一份,就直接把那份交出去,不做任何加工;MDN 稱這種方式為靜態。另一種多了應用伺服器與資料庫,伺服器在把內容送到你眼前之前,會先即時組合、更新過,才交出去;MDN 稱之為動態。動態伺服器會用從資料庫讀出來的資料,填進 HTML 模板,拼出瀏覽器最後看到的網頁。
大型知識庫網站看似有成千上萬個頁面,其實不是真的有成千上萬份寫死的檔案,背後是少數幾套版型加上一個龐大的資料庫。每次有人瀏覽,伺服器才把對應的資料填進版型,組出頁面。許多中小企業網站用內容管理系統架設,無論寫文章或上架商品,都屬於這種即時組合的類型;版型長什麼樣子是固定的,實際顯示的文字、圖片、商品資訊,則是每次瀏覽時才從資料庫抓出來拼上去。

這個分層的實際意義,在於備份網站不是複製一個資料夾就能算數。一份完整的備份得同時處理檔案跟資料庫兩邊。只備份檔案,文章、商品、頁面文字這些存在資料庫裡的內容全都留不住;只備份資料庫,版型跟圖片這些檔案又會不見。兩邊都備齊,才算是真正把網站完整地留下來。
網頁設計公司通常不是伺服器的實際主人
網站放在哪裡,不只是機器實際擺在哪個機房,更貼近你會遇到的問題是由誰在管。建置一個網站,背後通常牽涉三件事,一是網域申請,二是伺服器主機出租,三是網站設計與開發,這三件事不一定是同一家公司在做。
網頁設計公司幫你做網站的時候,多半是在某家主機供應商那裡替你申請或代管帳號,而不是自己擁有實際運轉的機器。這也說明了為什麼有些設計公司會把主機費用併進報價裡,那筆錢多半轉付給背後的主機供應商,真正提供伺服器的是他們。設計公司負責的是網站的程式與畫面,不是機器本身。
MDN 提到,主機供應商也可能同時是網域註冊商,Ionos 和 Gandi 就身兼這兩種角色。也就是說,網域註冊商、主機供應商、網站設計公司這幾種角色,在市場上時而合併、時而分開,沒有固定答案。
網站遇到狀況,可以從症狀判斷該找誰。版面跑掉、功能失靈,多半是程式面的問題,直接找設計公司處理;整個網站打不開、連不上,通常出在主機那一端,就要聯絡主機供應商。你不需要自己管理伺服器,但至少要知道網站掛在哪一家主機供應商底下,這是判斷問題該往哪裡找的第一步。

也因此,挑選可靠的主機供應商跟找誰做設計是兩件事,建置網站時要分開考慮。
一台伺服器通常同時服務多個網站
找到主機供應商之後,網站放上去的那台伺服器多半不是你獨佔的,而是跟其他網站共用同一台機器的資源。這是主機市場很常見的商業模式,一台實體機器被切成好幾份,分租給不同網站,成本因此被攤薄,對你來說也代表更便宜的價格。共用也代表運算與儲存資源不是你的專屬,同一台機器上如果其他網站流量突然衝高,理論上有可能吃掉共用的資源,連帶影響你網站的反應速度。這也解釋了為什麼你的網站有時候明明沒改過什麼,卻突然變慢,原因不一定出在網站本身,而可能是同一台機器上別的租戶正在經歷流量高峰。
MDN 在討論建站成本時,把「要選高規格、反應超快的專屬伺服器,還是接受稍慢一點的共用機器」列為決定網站花費高低的關鍵問題之一。主機供應商計費的方式,通常是依照你的網站消耗多少頻寬、佔用多少伺服器空間來計算。這代表伺服器的空間跟流量都是被計算、分配的有限資源,不是無限供應。「高規格、反應快的獨立資源」跟「較慢的共用機器」,就是主機供應商定價高低的基本分野。方案等級越高,分到的資源越不受其他租戶影響,價格也隨之提高。這是主機市場常見的分級邏輯,不同流量規模的網站,本來就會落在不同的等級上。

伺服器沒辦法回應時,網站會出現的狀況
前面談到的 404,是伺服器順利收到請求,只是找不到對應的內容。還有一種更根本的情形,是整台機器連不上,或是忙到完全無法回應。這種時候,訪客看到的不會是網站內容,而是連線逾時,或瀏覽器自己跳出的錯誤畫面。
主機供應商通常用正常運行時間這個指標,承諾伺服器能穩定回應請求的比例,以百分比表示。百分比看起來只差一點,換算成一年當中的停機時間,就會看出實際差別。以一年 365 天、一天 24 小時計算,承諾 99.9% 的正常運行時間,等於一年最多容許約 8.76 小時停機,算法是 365 天乘以 24 小時,再乘以 0.1%。MDN 也提到,多數付費主機都會保證正常運行時間,這是它建議選付費主機、不要依賴免費主機的理由之一。

MDN 建議,委外建置網站前要想清楚兩件事。第一,要不要準備備援伺服器,以防伺服器故障停擺;第二,95% 的可靠度夠不夠,還是需要全天候的專業等級服務。
伺服器不必親自管理,但「要不要備援伺服器」、「多高的可靠度才夠」,都可以主動向主機供應商確認。把百分比換算成具體的停機時數,就能看懂主機供應商承諾的服務等級實際代表什麼。
伺服器平常安靜待在機房裡,網站運作順利的時候,幾乎沒有人會想起它;真正需要知道它在哪、由誰負責的時刻,往往就是網站打不開的那一天。與其到時候才翻舊信件找當初的報價單,不如趁網站正常的時候,把主機供應商的名稱、主機帳號由誰代管、方案承諾的正常運行時間寫進同一份文件,放在無論誰接手網站都找得到的地方。這幾行字不需要任何技術背景,卻能讓下一次出狀況時,少繞一大段找人的路。
