Apache 2.0 ve sonrasında mevcut olan Süzgeç Zinciri, uygulamaların nereden geldiğine bakmaksızın gelen ve giden verileri oldukça esnek ve yapılandırılabilir tarzda işlemesini mümkün kılar. Böylece, gelen veriyi bir takım ön işlemlerden geçirebilir, giden veriyi de son bir defa bazı işlemlere sokabiliriz. Bu işlem temel olarak geleneksel istek işleme aşamalarından bağımsızdır.
Standard Apache dağıtımıyla gelen süzgeç uygulamalarından bazıları:
mod_include, sunucu taraflı içerik yerleştirmeyi gerçekler.
mod_ssl, SSL şifrelemesini gerçekler (https).
mod_deflate, veri sıkıştırma/açma işlemlerini çalışma anında gerçekleştirir.
mod_charset_lite, karakter kümeleri arasında dönüşümü gerçekleştirir.
mod_ext_filter, harici bir yazılımı bir süzgeç olarak çalıştırır.
Apache, bunlardan başka, bayt dizilerinin elde edilmesi ve içeriğin bölünmesi gibi işlemleri gerçekleştirmek için bir takım dahili süzgeçler de kullanabilir.
Üçüncü parti süzgeç modülleri tarafından gerçeklenmiş modüllerden bazılarının uygulama alanları:
HTML ve XML belgelerin işlenmesi ve yazılması
XSLT dönüşümleri ve XInclude’lar
XML İsim-alanı desteği
HTML Formlarının çözümlenmesi ve sunucuya dosya yükleme
Resim işleme
PHP betikleri gibi zararlı olabilecek uygulamalardan korunma
Metin düzenleme ve arama işlemleri
Akıllı Süzme
mod_filter, Apache 2.1 ve sonrasında mevcut olup, süzgeç zincirinin çalışma anında devingen olarak yapılandırılabilmesini mümkün kılar. Böylece, örneğin, bir vekili, özgün sunucunun ne göndereceğini bilmeden HTML’yi bir HTML süzgeciyle yazmaya ve JPEG resimleri tamamen farklı bir süzgeçten geçirmeye ayarlayabilirsiniz. Bu, asıl içeriğe bağlı olarak çalışma anında içeriği farklı içerik sağlayıcılara dağıtan bir süzgeç düzeneği kullanılarak çalışır. Bir süzgeç, doğrudan zincire yerleştirilip koşulsuz olarak çalıştırılabileceği gibi bir içerik sağlayıcı gibi kullanılarak zincire devingen olarak yerleştirilebilir. Örneğin:
Bir HTML işleme süzgeci sadece içerik text/html veya application/xhtml+xml olduğu takdirde çalışır.
Bir sıkıştırma süzgeci sadece girdi sıkıştırılabilir nitelikteyse ve sıkıştırılmamışsa çalışır.
Bir karakter kümesi dönüşüm süzgeci, bir metin belgesi istenen karakter kümesine sahip değilse zincire yerleştirilir.
Süzgeçleri bir HTTP Hizmeti gibi göstermek
Süzgeçler, istemciden kaynaklanan içeriği işlemekte kullanılabileceği gibi mod_reflector modülü kullanılarak sunucudan kaynaklanan içeriği işlemekte de kullanılabilir.
mod_reflector istemcilerden gelen POST isteklerini kabul eder ve çıktı süzgeç yığıtı yoluyla istemciye aktararak, POST isteği içinde alınan içerik istek gövdesini yanıt içinde geri gönderir.
Bu teknik, bir çıktı süzgeciyle istek gövdesinde gerekli dönüşümün sağlandığı durumda, bir uygulama sunucusu yığıtı içinde çalışan bir http hizmetinin yerine de kullanılabilir. Örneğin, mod_deflate modülü genel bir sıkıştırma hizmeti sağlamakta kullanılabilir veya bir resim dönüştürme süzgeci bir resim dönüşüm hizmeti haline getirilebilir.
Süzgeçlerin Kullanımı
Süzgeçler iki şekilde kullanılır: Basit ve Devingen. Genelde ikisinden biri kullanılır; karışık kullanılırsa istenmeyen sonuçlara yol açabilir (ise de, basit girdi süzme ile çıktı süzme işlemi basit olsun olmasın karışık kullanılabilir).
Basit yol, girdi süzgeçlerini yapılandırmanın tek yoludur ve bir durağan süzgeç zincirinin gerektiği yerlerde çıktı süzgeçleri için yeterlidir. İlgili yönergeler: SetInputFilter, SetOutputFilter, AddInputFilter, AddOutputFilter, RemoveInputFilter ve RemoveOutputFilter.
Devingen yol, mod_filter belgesinde açıklandığı gibi, çıktı süzgeçlerinin hem durağan hem de esnek ve devingen olarak yapılandırılabilmesini mümkün kılar. İlgili yönergeler: FilterChain, FilterDeclare ve FilterProvider.
AddOutputFilterByType yönergesi hala desteklenmekteyse de kullanımı artık önerilmemektedir. Onun yerine devingen yapılandırma kullanınız.
Mevcut Diller: en | es | fr | ja | ko | tr
Yorumlar
Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.