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

Apache 核心指令參考手冊:KeepAliveTimeout、Limit、LimitExcept 詳細解析

     編輯:PHP 相關知識

KeepAliveTimeout 指令:持久連線等待閾值

屬性說明
語法KeepAliveTimeout seconds
預設值KeepAliveTimeout 15
作用域server config (主伺服器設定)
狀態Core (核心模組)
相容性Apache 1.1+ 可用

功能說明

定義 Apache 在關閉持久連線前,等待後續請求的秒數。一旦收到請求,超時控制即切換為 Timeout 指令規定的值。

調優建議

  • 高併發短連線場景:可適當降低 (如 5-10 秒),釋放工作進程
  • 低延遲內網/長連線 API:可調高 (30-60 秒),減少握手開銷
  • 預設 15 秒為折衷值,多數場景無需修改

<Limit> 指令:針對特定 HTTP 方法的存取控制

屬性說明
語法<Limit method method ... > ... </Limit>
作用域any (任何上下文)
狀態core

核心用途

預設存取控制對所有 HTTP 方法生效。<Limit> 旨在限制存取控制指令僅對列出的方法生效,其他方法不受區塊內限制約束。

支援的 HTTP 方法

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> 指令:反向邏輯的存取控制 (Apache 1.3.5+)

屬性說明
語法<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 在內網段。

優勢

  • 自動涵蓋非標準/未來新增的 HTTP 方法,無需維護方法清單
  • 邏輯更直觀:明確列出「不受保護的方法」,其餘自動受保護
  • 可同時控制標準與非標準方法

綜合對比與選型指南

指令邏輯適用場景安全性建議
<Limit>白名單:僅列出方法受控極少數方法需特殊保護,其餘完全公開⚠️ 易漏保護新增方法,謹慎使用
<LimitExcept>黑名單:除列出方法外皆受控大多數場景:預設保護,僅開放安全方法✅ 推薦,符合最小權限原則

實戰組合範例:RESTful API 存取控制

<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>

此配置實現:公開讀取、認證寫入、管理員專屬刪除的分層授權。

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