<-
Apache > HTTP Server > 文件 > 版本 2.4

過濾器

可用的語言:  en  |  es  |  fr  |  ja  |  ko  |  tr 

此文件說明如何使用 Apache 中的過濾器。

Support Apache!

另見

top

Apache 2 中的過濾

過濾器鏈在 Apache 2.0 以上版本中提供,並讓應用程式能以高度靈活且可設定的方式處理流入與流出的資料,不論資料的來源為何。我們可以隨意預先處理流入資料,以及後續處理流出資料。這在基本上與傳統的請求處理階段無關。

Filters can be chained, in a Data Axis orthogonal to request processing

以下是在標準 Apache 發行版中過濾的範例:

Apache 內部也會使用多個過濾器來執行區塊與位元組範圍處理等功能。

第三方過濾器模組可實作更廣泛的應用程式。以下列出幾個:

top

智慧型篩選

Smart filtering applies different filter providers according to the state of request processing

mod_filter,包含在 Apache 2.1 及以上的版本中,在執行階段啟用動態設定篩選鏈的機制。例如,您可以設定代理程式以使用 HTML 篩選器改寫 HTML,而對於 JPEG 影像,則使用完全不同的篩選器進行改寫,儘管代理程式事先並不知道原始伺服器會傳送什麼內容。此運作機制是透過使用篩選器框架程式,在執行階段根據實際內容將請求分配給不同的提供者。任何篩選器都可以直接插入 zincir中並無條件執行,也可以用作提供者並動態插入。例如:

top

將篩選器公開為 HTTP 服務

除了使用 mod_reflector 模組處理來自伺服器的內容之外,還可以使用篩選器處理來自用戶端的內容。

mod_reflector 接受用戶端發出的 POST 請求,並將在 POST 請求中接收到的內容請求主體,在反應中反映回去,在返回用戶端的過程中透過輸出篩選堆疊。

此技術可用作應用程式伺服器堆疊中內部運作的 Web 服務的替代方案,而輸出篩選器則提供請求主體所需的轉換。例如,mod_deflate 模組可用來提供一般的壓縮服務,或將影像轉換篩選器轉成影像轉換服務。

top

使用篩選器

有兩種方法可以使用篩選器:簡單和動態。一般來說,您應該使用其中一種方法;將這兩種方法混合使用可能會導致無法預測的結果(儘管輸入簡單篩選器可以自由地與簡單或動態輸出篩選器混合使用)。

簡單的方法是設定輸入篩選器時唯一的選項,對於您需要靜態篩選鏈的輸出篩選器來說已經足夠。相關的指令有 SetInputFilterSetOutputFilterAddInputFilterAddOutputFilterRemoveInputFilter,以及 RemoveOutputFilter

動態方式支援輸出篩選器的靜態與彈性動態設定,與 mod_filter 頁面探討內容相同。相關指令有 FilterChainFilterDeclareFilterProvider

另一個指令 AddOutputFilterByType 仍受支援,但已不建議使用。請改用動態設定。

可用的語言:  en  |  es  |  fr  |  ja  |  ko  |  tr 

top

留言

注意事項
這裡並非問答區。張貼的留言應針對文件或伺服器的改進建議,且如果已實作或被視為無效/離題,我們的版主可能會移除留言。有關如何管理 Apache HTTP Server 的問題,應提交至我們的 Libera.chat 上的 IRC 頻道 #httpd,或傳送至我們的 郵寄清單