Apache 提供兩大系列指令限制資源消耗,防範惡意請求導致的拒絕服務 (DoS) 攻擊:
限制 HTTP 請求主體最大位元組數。
LimitRequestBody 102400 # 限制 100 KB,0 表無限制(預設)
# 適用範圍:server config, virtual host, directory, .htaccess
用例:檔案上傳功能限制上傳大小。
限制 HTTP 請求標頭欄位數量。
LimitRequestFields 50 # 預設 100,0 表無限制
# 正常請求標頭欄位通常 < 20
限制單一 HTTP 請求標頭欄位大小(位元組)。
LimitRequestFieldSize 4094 # 預設 8190,建議保持預設
限制 HTTP 請求行總長度(Method + URI + Protocol),間接限制 URL 長度。
LimitRequestLine 4094 # 預設 8190,建議保持預設
限制衍生進程佔用 CPU 秒數(軟/硬限制)。
RLimitCPU 30 60 # 軟限 30 秒,硬限 60 秒;max 表系統上限
# 需 root 權限提高硬限制
限制衍生進程佔用記憶體位元組數。
RLimitMEM 10485760 20971520 # 10 MB 軟限,20 MB 硬限
限制衍生進程可建立的子進程數(每用戶進程數)。
RLimitNPROC 50 100 # 軟限 50,硬限 100
# 若 CGI 非以 Web 伺服器 uid 執行,將限制伺服器自身 fork 能力
# 錯誤日誌會記錄 "cannot fork"
控制處理連線之執行緒堆疊大小(位元組)。
ThreadStackSize 65536 # NetWare 預設 65536,其他平台採 OS 預設
# 僅在第三方模組需較大堆疊或診斷確認為堆疊不足導致崩潰時調整
# 減小值可增加單進程最大執行緒數,但需充分測試
mod_security、mod_evasive 形成多層防護。