| 屬性 | 說明 |
|---|---|
| 語法 | KeepAliveTimeout seconds |
| 預設值 | KeepAliveTimeout 15 |
| 作用域 | server config (主伺服器設定) |
| 狀態 | Core (核心模組) |
| 相容性 | Apache 1.1+ 可用 |
定義 Apache 在關閉持久連線前,等待後續請求的秒數。一旦收到請求,超時控制即切換為 Timeout 指令規定的值。
| 屬性 | 說明 |
|---|---|
| 語法 | <Limit method method ... > ... </Limit> |
| 作用域 | any (任何上下文) |
| 狀態 | core |
預設存取控制對所有 HTTP 方法生效。<Limit> 旨在限制存取控制指令僅對列出的方法生效,其他方法不受區塊內限制約束。
GET, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK (大小寫敏感)。注意:若包含 GET,HEAD 請求也會被限制。
<Limit POST PUT DELETE>
Require valid-user
</Limit>
此設定下,GET、HEAD、OPTIONS 等讀取操作無需認證,僅 POST/PUT/DELETE 需合法用戶。
一般情況下,存取控制指令不應置於
<Limit>區塊內,除非確有針對特定方法差異化授權的需求。優先考慮<LimitExcept>實現「預設拒絕、白名單放行」更安全。
| 屬性 | 說明 |
|---|---|
| 語法 | <LimitExcept method method ... > ... </LimitExcept> |
| 作用域 | any |
| 狀態 | core |
| 相容性 | Apache 1.3.5+ |
<LimitExcept> 包裹的存取控制指令,將對未列出的所有 HTTP 方法生效。這是 <Limit> 的補集操作,更適合「預設保護、例外開放」的安全模型。
<LimitExcept GET HEAD OPTIONS>
Require valid-user
Require ip 192.168.1.0/24
</LimitExcept>
效果:GET/HEAD/OPTIONS 免認證;其他方法 (POST、PUT、DELETE 等) 需同時滿足用戶認證且來源 IP 在內網段。
| 指令 | 邏輯 | 適用場景 | 安全性建議 |
|---|---|---|---|
<Limit> | 白名單:僅列出方法受控 | 極少數方法需特殊保護,其餘完全公開 | ⚠️ 易漏保護新增方法,謹慎使用 |
<LimitExcept> | 黑名單:除列出方法外皆受控 | 大多數場景:預設保護,僅開放安全方法 | ✅ 推薦,符合最小權限原則 |
<Location /api/v1/>
# 公開端點:僅允許 GET/HEAD/OPTIONS 免認證
<LimitExcept GET HEAD OPTIONS>
AuthType Basic
AuthName "API Protected Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</LimitExcept>
# 額外保護:刪除操作需管理員權限
<Limit DELETE>
Require group admin
</Limit>
</Location>
此配置實現:公開讀取、認證寫入、管理員專屬刪除的分層授權。