Apache HTTP Server 版本 2.4
相關模組 | 相關指令 |
---|---|
過濾器鏈在 Apache 2.0 以上版本中提供,並讓應用程式能以高度靈活且可設定的方式處理流入與流出的資料,不論資料的來源為何。我們可以隨意預先處理流入資料,以及後續處理流出資料。這在基本上與傳統的請求處理階段無關。
以下是在標準 Apache 發行版中過濾的範例:
mod_include
,實作伺服器端的載入。mod_ssl
,實作 SSL 加密功能 (https)。mod_deflate
,實作即時壓縮/解壓縮。mod_charset_lite
,在不同的字元集之間進行轉碼。mod_ext_filter
,將外部程式當成過濾器執行。Apache 內部也會使用多個過濾器來執行區塊與位元組範圍處理等功能。
第三方過濾器模組可實作更廣泛的應用程式。以下列出幾個:
mod_filter
,包含在 Apache 2.1 及以上的版本中,在執行階段啟用動態設定篩選鏈的機制。例如,您可以設定代理程式以使用 HTML 篩選器改寫 HTML,而對於 JPEG 影像,則使用完全不同的篩選器進行改寫,儘管代理程式事先並不知道原始伺服器會傳送什麼內容。此運作機制是透過使用篩選器框架程式,在執行階段根據實際內容將請求分配給不同的提供者。任何篩選器都可以直接插入 zincir中並無條件執行,也可以用作提供者並動態插入。例如:
除了使用 mod_reflector
模組處理來自伺服器的內容之外,還可以使用篩選器處理來自用戶端的內容。
mod_reflector
接受用戶端發出的 POST 請求,並將在 POST 請求中接收到的內容請求主體,在反應中反映回去,在返回用戶端的過程中透過輸出篩選堆疊。
此技術可用作應用程式伺服器堆疊中內部運作的 Web 服務的替代方案,而輸出篩選器則提供請求主體所需的轉換。例如,mod_deflate
模組可用來提供一般的壓縮服務,或將影像轉換篩選器轉成影像轉換服務。
有兩種方法可以使用篩選器:簡單和動態。一般來說,您應該使用其中一種方法;將這兩種方法混合使用可能會導致無法預測的結果(儘管輸入簡單篩選器可以自由地與簡單或動態輸出篩選器混合使用)。
簡單的方法是設定輸入篩選器時唯一的選項,對於您需要靜態篩選鏈的輸出篩選器來說已經足夠。相關的指令有 SetInputFilter
、SetOutputFilter
、AddInputFilter
、AddOutputFilter
、RemoveInputFilter
,以及 RemoveOutputFilter
。
動態方式支援輸出篩選器的靜態與彈性動態設定,與 mod_filter
頁面探討內容相同。相關指令有 FilterChain
、FilterDeclare
和 FilterProvider
。
另一個指令 AddOutputFilterByType
仍受支援,但已不建議使用。請改用動態設定。