HTTP 協定基礎#

WWW 基於 HTTP(超文本傳輸協定)運作,採用伺服器/用戶端架構。伺服器提供 HTML 網頁與多媒體檔案,用戶端的瀏覽器負責解析與呈現。

URL 的構成#

協定://主機位址[:埠口]/資源路徑
  • HTTP 預設 port 80,HTTPS 預設 port 443
  • 未指定檔案時自動載入首頁(如 index.html

HTTP 方法#

  • GET:在 URL 中指定資源(最常用)
  • POST:透過請求體傳送表單資料
  • HEADOPTIONSDELETE 等用於特定用途

HTTP 是明碼傳輸,資料在網路上未加密。任何涉及敏感資訊(帳號、密碼、信用卡)的傳輸都必須使用 HTTPS。

LAMP 平台架構#

LAMP 是 Linux Web 開發的經典組合:

  • Linux — 作業系統
  • Apache — 網頁伺服器
  • MySQL — 資料庫
  • PHP — 伺服器端程式語言

靜態 vs. 動態網站#

  • 靜態網站:伺服器單向提供預先製作的 HTML 檔案
  • 動態網站:透過 PHP 等語言即時處理請求、查詢資料庫、產生客製化內容

Apache 伺服器核心概念#

多程序架構#

  • prefork:獨立程序,記憶體耗用多但穩定
  • worker:執行緒設計,記憶體效率高

MaxClients 參數決定同時允許的最大連線數,設定過高會耗盡記憶體,過低則限制服務能力。

設定檔結構#

  • 主設定檔 httpd.conf 可透過 Include 引入額外設定
  • DocumentRoot:指定網頁根目錄
  • Directory 區塊:針對特定目錄設定權限與功能

權限與安全管理#

Options 參數#

選項功能建議
Indexes列出目錄內容應關閉,避免暴露檔案結構
FollowSymLinks允許符號連結謹慎使用
ExecCGI執行 CGI 腳本按需開啟

存取控制#

透過 OrderAllowDeny 機制控制 IP 層級的存取。.htaccess 檔案可在特定目錄內覆寫主設定,無需重啟 Apache 即時生效。

虛擬主機(Virtual Host)#

讓一部實體伺服器對應多個網站。透過 NameVirtualHost 搭配個別的 ServerNameDocumentRoot,在單一 IP 上提供多個獨立網站。

應用場景:

  • 主機代管:一部伺服器為多個客戶提供網站
  • 服務分離:將不同功能的網站分開管理
  • 備援容錯:搭配 DNS 實現自動切換

SSL/TLS 與 HTTPS#

加密原理#

SSL 透過非對稱金鑰系統加密傳輸。伺服器持有私鑰,用戶端用公鑰加密,確保資料在網路上的安全。

憑證與 CA#

  • 自簽憑證:免費但瀏覽器會警告
  • CA 簽發憑證:具公信力,瀏覽器預設信任

現代 Web 服務基本上都應該使用 HTTPS。Let’s Encrypt 提供免費的自動化憑證,已無理由不加密。

日誌與效能#

登錄檔#

  • access_log:記錄所有正常請求,供流量分析
  • error_log:記錄錯誤資訊,是除錯的首要查看對象

大規模網站的日誌檔每週可達 GB 級,需搭配 logrotate 自動歸檔壓縮。

效能優化#

  • PHP 加速器可預先編譯 PHP 為二進位形式
  • ab 工具可模擬並行連線測試伺服器承載能力
  • 效能優化應基於實際需求與監控數據,而非盲目調參

/var 分割區建議預留充足空間(10GB 以上),因為登錄檔、快取與上傳檔案都會存放在此。空間不足會導致服務異常。