首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

MC_HTTPD:輕量級 Web 伺服器完整指南與配置詳解

     編輯:關於C語言

簡介

MC_HTTPD 是一個由開發者顏文澤(Robin)編寫的輕量級 Web 伺服器,版本 0.9。它支援多種 HTTP 方法與標頭,具備虛擬主機、斷點續傳、CGI 等實用功能,適合嵌入式系統或學習 HTTP 協議運作原理。

安裝步驟

  1. 進入原始碼目錄:cd mc_httpd-x.x
  2. 配置安裝路徑:./configure --mandir=/usr/share/man
  3. 編譯:make
  4. 切換至 root 權限:su root
  5. 安裝:make install
  6. 查看並修改配置檔 doc/mc_httpd.conf,依需求調整設定。
  7. 複製配置檔:cp doc/mc_httpd.conf /etc/mc_httpd.conf
  8. 退出 root:exit

支援功能

HTTP 方法

  • GET、HEAD、POST、DELETE、PUT

請求標頭

  • Accept, Accept-Charset, Accept-Encoding, Accept-Language, Host
  • If-Match, If-Modified-Since, If-None-Match, If-Range, Range, If-Unmodified-Since
  • User-Agent

通用標頭

  • Connection、Date

回應標頭

  • ETag、Location、Server

實體標頭

  • Expires、Content-Encoding、Content-Length、Content-Location、Content-MD5、Content-Range、Last-Modified、Content-Type

其他特性

  • Cookie 與 Status 標頭
  • CGI/1.1 相容
  • 虛擬主機
  • 斷點下載與上傳(需符合 HTTP/1.1 Content-Length 規範)
  • 多行標頭欄位

不支援功能

  • 無法作為 Proxy 伺服器
  • 不支援影音串流

命令列參數

參數優先級高於配置檔,重啟時無法重新指定(除 -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 路徑)
cgitimelimitCGI 程式執行時間限制(本版本無效)
timelimit本版本無效
maxrequests本版本無效
maxinterval同一連線兩個請求的最大間隔時間
port監聽埠號
backloglisten() 的 backlog 值
dirset0=不顯示目錄,非 0=顯示目錄
putset0=禁止 PUT,非 0=允許 PUT
deleteset0=禁止 DELETE,非 0=允許 DELETE
mdaset0=不發送 Content-MD5,非 0=預設發送
etagset0=不發送 ETag,非 0=允許發送
defaulttype無法辨識檔案類型時的預設 MIME 類型
defaultcharset預設字元集
user進程 UID
group進程 GID
tmppath暫存檔路徑(相對於 rootpath)
logfile日誌檔絕對路徑,需定期清理
pidfile進程 PID 檔案路徑
hosts虛擬主機設定(格式見文件)
indexnames預設首頁檔名列表(如 index.html, index.xhtm)
cgipathsCGI 程式目錄列表
errpage自訂錯誤頁面(如 404.html)
mimeencodingMIME 編碼設定
mimetypeMIME 類型對應表

訊號處理

  • SIGTERM:優雅關閉進程
  • SIGHUP:重啟伺服器進程

CGI 程式部署

CGI 程式需在 rootpath 下擁有完整執行環境。例如:

  • Shell 腳本需 /home/nns/bin/sh 及相關庫
  • Perl 程式需 /home/nns/bin/perl 及 /home/nns/lib/libperl.so

確保 chroot 環境內包含所有必要的二進位檔與函式庫。

總結

MC_HTTPD 功能完整、配置彈性,適合作為嵌入式 Web 伺服器或教學用途。其模組化設計支援虛擬主機與斷點傳輸,配置檔參數豐富,命令列參數提供快速覆蓋機制。部署時注意 CGI 環境隔離與日誌維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved