什麼是伺服器?為應用程式建置者寫的白話指南
伺服器是一台電腦,或在電腦上執行的程式,它等待請求並加以回應。當你打開一個網站時,你的瀏覽器(即客戶端)會透過網際網路發出請求,而某處的伺服器則會把頁面、圖片或資料送回來。你使用的每一個應用程式,從電子郵件到網路銀行,都依賴伺服器每天數百萬次地做這件事。
為什麼使用 AI 建置時伺服器很重要
當 AI 建置工具幫你做出一個應用程式時,程式碼的一部分會在訪客的瀏覽器中執行,而另一部分通常會在伺服器上執行。伺服器那一部分,負責瀏覽器無法被信任、或無法獨自完成的工作:
- 儲存與讀取資料,來自資料庫。
- 保管機密,例如付款或 AI 服務商的 API 金鑰,這些絕不能傳到瀏覽器。
- 檢查權限,確保使用者只能看到與修改自己的紀錄。
- 與其他服務溝通:扣款、寄送電子郵件、呼叫 AI 模型。
了解伺服器做什麼,能幫助你理解應用程式的規則真正存在哪裡、為什麼有些修改需要重新發布,以及託管應用程式時你付的錢花在哪裡。關於兩個部分如何切分,請參閱前端與後端。
日常生活的比喻
伺服器就像郵局的櫃檯人員。他們不會出去找顧客,而是等待。顧客走上前來提出請求,例如「寄這個包裹」或「請問有我的郵件嗎?」,櫃員就會處理,並把結果交回去。一位櫃員可以一個接一個地服務許多顧客,而繁忙的郵局則會開更多櫃檯。
郵局也有顧客無法推翻的規定:領取包裹必須出示證件。這在應用程式中也是伺服器的工作。瀏覽器可以要求任何東西,但最後是伺服器決定它能得到什麼。
請求如何抵達伺服器
當有人造訪 https://bookings.example.com/schedule 時:
- DNS 查詢。 瀏覽器詢問網域名稱系統,
bookings.example.com指向哪個 IP 位址。請參閱網域與 DNS 如何運作。 - 連線。 瀏覽器連到該位址的 443 埠(HTTPS),並建立加密連線。請參閱什麼是 HTTPS 與 SSL。
- 請求。 它送出一個 HTTP 請求:
GET /schedule。 - 處理。 伺服器執行負責處理
/schedule的程式碼,例如查詢資料庫中今天的預約。 - 回應。 它送回一個狀態碼(
200 OK)與內容,可能是 HTML 頁面,或供頁面顯示的 JSON 資料。
整個過程通常只需要不到一秒鐘。
你會聽到的各種伺服器
| 術語 | 意義 |
|---|---|
| 網頁伺服器 | 回應 HTTP 請求的軟體,負責送出檔案,或把請求交給你應用程式的程式碼。 |
| 應用程式伺服器 / 後端 | 在伺服器上執行的你自己的程式碼:處理預約、登入與付款的 API。 |
| 資料庫伺服器 | 負責儲存與查詢資料的伺服器,例如你的應用程式所連接的 Postgres 資料庫。 |
| 檔案 / 靜態伺服器 | 送出現成的檔案(HTML、圖片、腳本),不必為每個請求執行自訂程式碼。 |
| 實體伺服器 | 放在資料中心機架上的真實機器。 |
| 虛擬機器(VM)/ VPS | 實體機器的一部分,表現得像一台獨立的電腦。 |
| 容器(Container) | 把應用程式與它所需的一切打包在一起、在共用機器上執行的輕量包裝。許多平台都以這種方式部署應用程式。 |
| 無伺服器(Serverless) | 你上傳程式碼,由服務商依需求執行,運行在你從不需要管理的伺服器上。請參閱什麼是無伺服器。 |
請注意,「伺服器」既指機器,也指程式。「伺服器當機了」可能是指其中任何一種。
實例:沙龍預約應用程式
以下是伺服器在一個小型沙龍預約應用程式中做的事:
- 訪客打開網站。伺服器(或其前面的 CDN)會送出頁面檔案。
- 頁面向伺服器請求
GET /api/slots?date=2026-10-03。伺服器查詢資料庫中的空位,並以 JSON 回傳。 - 訪客預約 14:00。頁面送出
POST /api/bookings。伺服器檢查該時段是否仍然空著(它不會單憑瀏覽器的說法就相信),儲存預約,並回傳201 Created。 - 伺服器使用儲存在伺服器上的機密金鑰,呼叫電子郵件服務寄出確認信。
如果你把伺服器關掉,頁面或許還能從 CDN 載入,但它將無法顯示空位,也無法儲存預約。
伺服器要順利運作需要什麼
- 記憶體(RAM)與 CPU。 記憶體太少,應用程式在負載下會當機;CPU 太少,則會變慢。
- 保持運行。 關閉的伺服器無法回應。有些平台會讓閒置的應用程式進入休眠,並在下次造訪時喚醒。這樣可以省錢,但第一次請求可能較慢。
- 設定與機密,以環境變數的形式提供。
- 日誌,也就是伺服器對所發生事情的紀錄,出問題時你首先應該查看的地方。
- 更新與安全修補,由託管平台替你處理。
常見誤解
- 「雲端就代表沒有伺服器。」 雲端就是別家公司的伺服器,你按小時或依使用量租用。
- 「伺服器是一台很特別的大型電腦。」 任何電腦都可以當伺服器。你在開發時打開
localhost,你的筆記型電腦就在執行一台伺服器。 - 「如果按鈕是隱藏的,使用者就無法執行那個操作。」 任何人都可以直接把請求送到你的伺服器。權限檢查必須在伺服器上進行,而不只是在頁面上。
- 「增加伺服器就能解決速度慢的問題。」 通常真正的原因是緩慢的資料庫查詢,或外部 API。先找出瓶頸。
- 「我必須管理伺服器才能擁有應用程式。」 託管平台會替你經營伺服器;你只需部署程式碼,它們會處理機器的部分。
該向你的 AI 建置工具要求什麼
- 「這個應用程式的哪些部分在伺服器上執行,哪些在瀏覽器中執行?」
- 「把所有 API 金鑰保留在伺服器上,並從環境變數讀取。」
- 「對每個讀取或修改資料的請求,都在伺服器上檢查權限。」
- 「伺服器日誌在哪裡?針對這個錯誤,日誌說了什麼?」
- 「這個應用程式真的需要伺服器嗎?還是可以只是一個靜態網站?」
- 「應用程式閒置一段時間後,第一個請求會發生什麼事?」
Mythex 上的伺服器
在 Mythex 中,你不需要設定或管理伺服器。在建置時,你的應用程式會在一個私有的雲端沙盒中執行,用於即時預覽。發布時,Mythex 會部署它:靜態前端以靜態網站的形式部署,後端(Node、Python、C#、Java 等)則以從 Dockerfile 建置的容器形式部署,你不需要自己設定任何託管。Mythex 在部署時會選擇機器規格:預設為 1 個 CPU 與 512 MB 記憶體,並可依要求提供更多(免費方案最高 1 GB;Pro 方案最高 2 個 CPU、4 GB 記憶體與 3 台機器)。已發布的應用程式閒置時會休眠,並在下次造訪時喚醒,休眠中的應用程式不會產生運算費用。細節請參閱文件中的API 後端與主機限制,而我們的網站託管指南則涵蓋了更廣泛的背景。
常見問題
用簡單的話說,什麼是伺服器?
伺服器是一台電腦,或在電腦上執行的程式,它等待其他裝置的請求並加以回應。當你打開一個網站時,你的瀏覽器會向伺服器要頁面,而伺服器會把它送回來。
伺服器是實體機器還是軟體?
兩種意思都有人使用。「伺服器」可以指實體或虛擬的電腦,也可以指其上負責處理請求的程式,例如網頁伺服器。如今大多數應用程式都執行在雲端服務商資料中心的虛擬機器或容器上,而不是你自己擁有的硬體上。
每個網站都需要伺服器嗎?
是的,總要有東西把檔案送給訪客。靜態網站只需要簡單的檔案伺服器或 CDN。但如果應用程式需要儲存資料、處理登入或保管機密的 API 金鑰,它也需要執行你自己程式碼的後端伺服器。
localhost 是什麼意思?
localhost 代表「這台電腦本身」。開發者在自己的機器上執行應用程式時,會以像 http://localhost:3000 這樣的位址打開它。只有那台電腦能連到它;在部署到公開伺服器之前,其他人都看不到。