MC_HTTPD 是一個由開發者顏文澤(Robin)編寫的輕量級 Web 伺服器,版本 0.9。它支援多種 HTTP 方法與標頭,具備虛擬主機、斷點續傳、CGI 等實用功能,適合嵌入式系統或學習 HTTP 協議運作原理。
cd mc_httpd-x.x./configure --mandir=/usr/share/manmakesu rootmake installdoc/mc_httpd.conf,依需求調整設定。cp doc/mc_httpd.conf /etc/mc_httpd.confexit參數優先級高於配置檔,重啟時無法重新指定(除 -4、-6、-f 外,其餘參數不建議常用)。
| 參數 | 說明 |
|---|---|
| -4 | 強制使用 IPv4 運行 |
| -6 | 強制使用 IPv6 運行 |
| -c | 測試環境與配置檔,輸出結果但不實際啟動服務 |
| -x | 除錯模式,不啟動服務 |
| -v | 輸出版本資訊 |
| -d <path> | 指定伺服器根目錄(執行 chroot) |
| -f <path> | 指定配置檔絕對路徑(預設 /etc/mc_httpd.conf) |
| -u <user> | 指定進程 UID(支援用戶名或 ID) |
| -g <group> | 指定進程 GID(支援群組名或 ID) |
| -p <port> | 指定監聽埠號 |
若未指定 -4/-6,協議由系統決定(如 Ubuntu 12.04 預設 IPv4,FreeBSD 9.1 預設 IPv6)。
修改配置檔後需重啟生效。範本位於原始碼 doc/mc_httpd.conf,修改後複製至 /etc/。
| 參數 | 說明 |
|---|---|
| rootpath | 伺服器根目錄(chroot 路徑) |
| cgitimelimit | CGI 程式執行時間限制(本版本無效) |
| timelimit | 本版本無效 |
| maxrequests | 本版本無效 |
| maxinterval | 同一連線兩個請求的最大間隔時間 |
| port | 監聽埠號 |
| backlog | listen() 的 backlog 值 |
| dirset | 0=不顯示目錄,非 0=顯示目錄 |
| putset | 0=禁止 PUT,非 0=允許 PUT |
| deleteset | 0=禁止 DELETE,非 0=允許 DELETE |
| mdaset | 0=不發送 Content-MD5,非 0=預設發送 |
| etagset | 0=不發送 ETag,非 0=允許發送 |
| defaulttype | 無法辨識檔案類型時的預設 MIME 類型 |
| defaultcharset | 預設字元集 |
| user | 進程 UID |
| group | 進程 GID |
| tmppath | 暫存檔路徑(相對於 rootpath) |
| logfile | 日誌檔絕對路徑,需定期清理 |
| pidfile | 進程 PID 檔案路徑 |
| hosts | 虛擬主機設定(格式見文件) |
| indexnames | 預設首頁檔名列表(如 index.html, index.xhtm) |
| cgipaths | CGI 程式目錄列表 |
| errpage | 自訂錯誤頁面(如 404.html) |
| mimeencoding | MIME 編碼設定 |
| mimetype | MIME 類型對應表 |
CGI 程式需在 rootpath 下擁有完整執行環境。例如:
/home/nns/bin/sh 及相關庫/home/nns/bin/perl 及 /home/nns/lib/libperl.so確保 chroot 環境內包含所有必要的二進位檔與函式庫。
MC_HTTPD 功能完整、配置彈性,適合作為嵌入式 Web 伺服器或教學用途。其模組化設計支援虛擬主機與斷點傳輸,配置檔參數豐富,命令列參數提供快速覆蓋機制。部署時注意 CGI 環境隔離與日誌維護。