From: André Malo
Apacheânin belli adresleri ve portları dinlemek üzere yapılandırılması.
@@ -60,8 +59,8 @@ böyle bir durumda belirtilen bütün adres ve portlardan gelen isteklere yanıt verecektir. -ÃrneÄin, sunucunun hem 80 portundan hem de 8000 portundan gelen - baÄlantıları kabul etmesini saÄlamak için,
+ÃrneÄin, sunucunun tüm arabirimlerin hem 80 portundan hem de 8000 + portundan gelen baÄlantıları kabul etmesini saÄlamak için,
Listen 80
@@ -136,7 +135,7 @@
konaklar için gerçeklenmemiÅtir; sadece ana sunucuya hangi adresleri ve
portları dinleyeceÄini söyler. Hiç <VirtualHost>
yönergesi kullanılmamıÅsa sunucu
kabul edilen tüm isteklere aynı Åekilde davranacaktır. EÄer bir veya
- daha fazla adres ve port için farklı bir davranıŠbelirtmek
+ daha fazla adres veya port için farklı bir davranıŠbelirtmek
istiyorsanız <VirtualHost>
kullanabilirsiniz. Bir sanal
konaÄı gerçeklemek için önce sunucunun sanal konak için kullanacaÄı
adres ve portu dinleyeceÄini belirtmek gerekir. Bundan sonra bu sanal
diff --git a/docs/manual/bind.xml.meta b/docs/manual/bind.xml.meta
index 7e0f1ee9b75..b20a0953146 100644
--- a/docs/manual/bind.xml.meta
+++ b/docs/manual/bind.xml.meta
@@ -12,6 +12,6 @@
Apache HTTP Sunucusu Sürüm 2.2
+Bu belge mod_cache
,
+ mod_disk_cache
, mod_mem_cache
,
+ mod_file_cache
modülleri ve htcacheclean için bir baÅvuru
+ kılavuzu niteliÄindedir. HTTP sunucusu ve vekil olarak çalıÅmada
+ iÅlemleri hızlandırmak için bilinen sorunlar ve yanlıÅ
+ yapılandırmalardan kaçınarak Apacheânin önbellekleme özelliklerinin
+ nasıl kullanılacaÄı açıklanmıÅtır.
Apache HTTP sunucusunun 2.2 sürümünden itibaren
+ mod_cache
ve mod_file_cache
modülleri
+ deneysel olmaktan çıkarılmıŠve üretim amaçlı kullanılabileceÄine karar
+ verilmiÅtir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse
+ vekili olarak çalıÅmada HTTP iÅlemlerini hızlandırmak anlamında sunucuya
+ güç katarlar.
mod_cache
, ortam saÄlayıcı modülleri olan
+ mod_mem_cache
ve mod_disk_cache
ile
+ birlikte HTTP önbelleklemesini akıllıca yerine getirir. İçeriÄin kendisi
+ önbellekte saklanırken mod_cache
içeriÄin
+ önbelleklenebilmesini denetim altında tutan HTTP baÅlıkları ve
+ seçenekleri ile ilgilenir. Yerel ve vekalet edilen içeriÄin her ikisinin
+ de aynı anda iÅlem görmesi saÄlanabilir. mod_cache
,
+ vekalet edilen içeriÄe, devingen yerel içeriÄe veya zamanla deÄiÅen
+ yerel dosyalara eriÅimi hızlandırma ihtiyacına yönelik olarak hem basit
+ hem de karmaÅık önbellekleme yapılandırmalarını mümkün kılar.
mod_file_cache
ise biraz daha temel ancak bazen daha
+ kullanıÅlı olabilen bir önbellekleme Åekli ile ilgilenir. URLâlerin
+ önbelleklenebilmesini mümkün kılmanın karmaÅıklıÄıyla boÄuÅmak yerine
+ mod_file_cache
, dosyaların Apacheânin son baÅlatıldıÄı
+ zamanki durumlarını saklamak için dosyaların belleÄe eÅlenmek üzere ele
+ alınmasını saÄlar. Böylelikle, mod_file_cache
, çok sık
+ deÄiÅmeyen duraÄan yerel dosyalara eriÅim zamanını azaltmaya yardım
+ eder.
CacheFile
ve MMapStatic
yönergeleri ile ilgili
+ bölümlerde anlatılanları saymazsak mod_file_cache
, bu
+ belgenin asıl konusu olan mod_cache
önbellekleme
+ mimarisine göre daha basit bir önbellekleme gerçeklenimidir.
Bu belgeden azami yararı saÄlayabilmek için temel bir HTTP bilginizin + olması ve URLâlerin Dosya Sistemine + EÅlenmesi ile İçerik UzlaÅımı + belgelerini okumuÅ olmanız gerekir.
+ +İlgili Modüller | İlgili Yönergeler |
---|---|
Bir istek sonuçlanıncaya kadar mod_cache
modülünde iki
+ aÅamadan geçer. İlkinde mod_cache
bir URL eÅleme modülü
+ olarak çalıÅır ve URL önbellekteyse ve zaman aÅımına uÄramamıÅsa isteÄin
+ doÄrudan mod_cache
tarafından sunulmasını saÄlar.
Yani isteÄin sunumu sırasında, isteÄin örneÄin,
+ mod_proxy
veya mod_rewrite
tarafından
+ ele alınması gerekse bile bu yapılmaz. Ãnbelleklenen içerik ilk alındıÄı
+ haliyle sunulur.
EÄer URL önbellekte yoksa, mod_cache
isteÄi bir süzgece tabi tutar. Apache içeriÄin varlıÄını
+ saptamıÅsa içeriÄin süzgeç tarafından sunulmasını saÄladıktan sonra,
+ süzgeç içeriÄin önbelleklenebileceÄini saptamıÅsa gelecekte sunmak üzere
+ içeriÄi önbelleÄe kaydeder.
EÄer URL önbellekte bulunmuÅ fakat içeriÄin zaman aÅımına uÄradıÄı
+ anlaÅılmıÅsa süzgeç yine de eklenir fakat bu kez
+ mod_cache
önbellekteki sürümün hala geçerli olup
+ olmadıÄını saptamak için kaynaÄın bulunduÄu sunucuya bir koÅullu istek
+ gönderir. Ãnbellekteki sürüm hala geçerliyse temel verileri güncellenir
+ ve istek önbellekten sunulur. Ãnbellekteki sürüm artık geçerli deÄilse,
+ önbellekteki sürüm silinir ve süzgeç güncel içeriÄi önbelleÄe kaydeder
+ ve isteÄi oradan sunar.
Yerel içerik önbelleklendiÄi takdirde UseCanonicalName
yönergesine On
+ deÄeri atanmıÅsa önbellekten sunulan sayfa sayısında büyük bir artıÅ
+ olduduÄu görülür. Bunun sebebi içeriÄi sunan sanal konaÄın isminin
+ önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye
+ On
deÄerini atamak suretiyle çok isimli ve rumuzlu sanal
+ konaklar için farklı önbellek girdileri oluÅturulmaz, bunun yerine her
+ meÅru sanal konak için ayrı bir önbellek tutulur.
Ãnbellekleme, URLânin dosya ismine dönüÅtürülmesi aÅamasında + gerçekleÅtiÄinden önbelleklenen belgeler sadece URL isteklerine bir + yanıt olarak sunulurlar. Sunucu Taraflı + İçerikleri kullanmazsanız genellikle bunun fazla bir önemi + olmaz.
+ +
+ <!-- Bu içerik önbelleklenebilir. -->
+ <!--#include virtual="/dipnot.html" -->
+
+ <!-- Bu içerik önbelleklenemez. -->
+ <!--#include file="/bir/yol/dipnot.html" -->
+
Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin
+ saÄladıÄı hız artıÅından da yaralanmak istiyorsanız içerik
+ yerleÅtirmek için virtual
içerik türünü kullanınız.
Ãnbellekli öÄeler için öntanımlı zaman aÅımı süresi bir saat olmakla
+ birlikte CacheDefaultExpire
+ yönergesi kullanılarak bu deÄer kolaylıkla geçersiz kılınabilir. Bu
+ öntanımlı deÄer sadece içeriÄin özgün kaynaÄı bir zaman aÅımı süresi
+ veya son deÄiÅiklik tarihi belirtmediÄi takdirde kullanılır.
Bir yanıt Expires
baÅlıÄını deÄil de
+ Last-Modified
baÅlıÄını içeriyorsa
+ mod_cache
zaman aÅımı süresini CacheLastModifiedFactor
yönergesinin
+ nasıl kullanıldıÄına bakarak saptar.
Yerel içerik için, zaman aÅımı süresini hassas olarak ayarlamak
+ gerekirse mod_expires
kullanılabilir.
Zaman aÅımı süresinin üst sınırı CacheMaxExpire
yönergesi ile
+ belirlenebilir.
Ãnbellekteki içerik zaman aÅımına uÄrayıp, içerik saÄlayıcıya veya + arka sunucuya özgün isteÄi aktarmak yerine ayrı bir istek yapılması + gereÄi Apacheânin Åartlı bir istek yapması sonucunu doÄurur.
+ +Bir istemcinin veya önbelleÄin aynı içeriÄin farklı sürümleri + arasında ayrım yapabilmesi için HTTP protokolü bazı baÅlık alanları + önerir. ÃrneÄin, "Etag:" baÅlıÄıyla sunulan bir özkaynak için + "If-None-Match:" baÅlıÄıyla bir Åartlı istek yapmak mümkün olduÄu gibi + özkaynak "Last-Modified:" baÅlıÄıyla sunuluyorsa Åartlı istek + "If-Modified-Since:" baÅlıÄıyla yapılabilir, vesaire.
+ +Böyle bir Åartlı istek yapıldıÄında yanıt koÅulun içerikle eÅleÅip + eÅleÅmediÄine baÄlı olarak farklı olur. EÄer istek bir + "If-Modified-Since:" baÅlıÄıyla yapılmıÅsa ve içerik istekte + belirtilen zamandan önce deÄiÅtirilmemiÅse kısa ve öz olarak bir "304 + Not Modified" (Bir deÄiÅiklik yok) iletisiyle yanıt verilir.
+ +Aksi takdirde bir Åartlı istek yapılmamıŠgibi içeriÄin kendisi + sunulur.
+ +Ãnbellekleme ile ilgili Åartlı istekler çifte yarar saÄlar. Birinci + olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de + aynıysa bunu saptamak kolay olur ve özkaynaÄın tamamını aktarma + külfetinden kurtulunur.
+ +İkinci olarak, Åartlı istekler arka sunucuda normalden daha az
+ faaliyete sebep olur. DuraÄan dosyalar için bu genellikle
+ stat()
veya benzeri bir sistem çaÄrısıyla dosya
+ boyutları ve deÄiÅiklik zamanına bakmak Åeklinde gerçekleÅir.
+ Böylelikle Apache yerel içeriÄi önbellekliyor olsa bile ve hatta
+ içerik zaman aÅımına da uÄrasa önbellekteki dosyada bir deÄiÅiklik
+ olmadıÄı takdirde içeriÄi önbellekten sunmak daha hızlı olacaktır.
+ Ãünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha
+ hızlıdır (bu, bellekten okumayla diskten okumayı karÅılaÅtırmak
+ gibidir).
Evvelce bahsedildiÄi gibi Apacheâde iki tür önbellekleme yapılır ve
+ bunlar farklı yöntemlerle çalıÅır. mod_file_cache
+ önbelleklemesinde dosyalar Apache baÅlatıldıÄı zamanki içerikle
+ saklanır. Bu modül tarafından önbelleÄe alınmıŠbir dosya için istek
+ geldiÄinde isteÄin yolu kesilip önbellekteki dosya sunulur.
mod_cache
önbelleklemesinde iÅler biraz daha
+ karıÅıktır. Bir isteÄe hizmet sunulurken istenen içerik evvelce
+ önbelleklenmemiÅse önbellekleme modülü önce içeriÄin
+ önbelleklenebilirliÄine bakar. Bir yanıtın önbelleklenebilirliÄini
+ belirleyen koÅullar Åunlardır:
CacheEnable
ve CacheDisable
yönergelerine bakınız.CacheIgnoreNoLastMod
+ yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
+ koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
+ baÅlıklarından en az birini içermesi gerekir.CacheStorePrivate
+ yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
+ "private" deÄerli bir "Cache-Control:" baÅlıÄı içerdiÄi takdirde
+ yanıtın içeriÄi önbelleÄe alınmayacaktır.CacheStoreNoStore
yönergesi kullanılmamıÅsa yanıt
+ "no-store" deÄerli bir "Cache-Control:" baÅlıÄı içeriyorsa yanıt
+ içeriÄi önbelleÄe alınmayacaktır.Kısaca, istek zamana aÅırı baÄımlıysa ya da istek kısmen bile olsa + HTTP uzlaÅımıyla baÄdaÅmıyorsa önbelleÄe alınmamalıdır.
+ +İçeriÄi istekçinin IP adresine baÄlı olarak deÄiÅen veya her beÅ + dakikada bir deÄiÅikliÄe uÄrayan bir devingen içeriÄe sahipseniz böyle + bir içerik asla önbelleÄe alınmamalıdır.
+ +DiÄer taraftan, içerik HTTP baÅlıÄındaki deÄerlere baÄlı olarak + deÄiÅiyorsa içeriÄin bir "Vary" baÅlıÄı kullanılarak akıllıca + önbelleklenmesi imkanı mevcuttur.
+ + +"Vary" baÅlıklı bir yanıt arka sunucudan istenirken
+ mod_cache
tarafından alınmıÅsa akıllıca ele alınmaya
+ çalıÅılacaktır. Mümkünse, mod_cache
gelecekte bu
+ içerikle ilgili isteklerin "Vary" baÅlıklı yanıtları olacaÄını
+ saptayacak ve önbellekten doÄru içerikle yanıt verecektir.
ÃrneÄin, bir yanıt Åöyle bir baÅlık ile alınmıÅsa,
+ +
+ Vary: negotiate,accept-language,accept-charset
+
mod_cache
sadece accept-language ve accept-charset
+ baÅlıkları özgün istekle eÅleÅen önbellekli içeriÄi sunacaktır.
mod_cache
çoÄunlukla bir karÅı vekile sahip olmak
+ amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm
+ istekler önbellekleme modülü tarafından karÅılanacaktır. Yerel
+ özkaynakların önbelleklenmesi söz konusu olduÄunda Apacheânin güvenlik
+ modeli büyükçe bir deÄiÅikliÄe uÄrar.
Olası .htaccess
dosyalarının dosya sisteminin tamamında
+ taranması çok pahalı bir iÅlem olduÄundan mod_cache
,
+ (iÅlemi hızlandırmak için) önbelleÄe almanın temel amacını kısmen
+ gözardı ederek, önbellekteki içeriÄin sunumu için gerekli
+ yetkilendirmenin olup olmadıÄı konusunda bir karar üretmez. BaÅka bir
+ deyiÅle, eÄer mod_cache
bir kısım içeriÄi önbelleÄe
+ almıÅsa içerik zaman aÅımına uÄramadıÄı sürece bu içerik önbellekten
+ sunulacaktır.
ÃrneÄin, yapılandırmanız bir özkaynaÄa IP adresine göre eriÅime izin
+ veriyorsa bu içeriÄin önbelleÄe alınmayacaÄından emin olmalısınız.
+ Bunu CacheDisable
+ yönergesini veya mod_expires
kullanarak
+ yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
+ mod_cache
bir karÅı vekil gibi çalıÅarak sunulan her
+ içeriÄi arabelleÄe alacak ve hangi IP adresinden gelirse gelsin her
+ istemciye bunu sunacaktır.
Son kullanıcılarıın isteklerine önbellekten hizmet sunulduÄundan + önbelleÄin kendisi içerikle etkileÅime geçmek isteyenlerin veya + içeriÄi tahrif etmek isteyenlerin hedefi haline gelebilir. Apacheâyi + çalıÅtıran kullanıcı tarafından her zaman önbelleÄe yazılabileceÄini + akıldan çıkarmamak önemlidir. Bu durumda alıÅılmıÅın tersine tüm + içeriÄin Apache kullanıcısı tarafından yazılamamasının saÄlanması + önerilir.
+ +EÄer Apache kullanıcısı, örneÄin bir CGI sürecindeki açık nedeniyle
+ tehlikeye atılırsa, önbellek hedef alınabilir.
+ mod_disk_cache
kullanılırken önbellekteki bir öÄeyi
+ deÄiÅtirmek veya önbelleÄe yeni bir öÄe eklemek görece daha
+ kolaydır.
Bu risk, Apache kullanıcısını kullanan diÄer saldırı türleriyle
+ karÅılaÅtırıldıÄında daha yüksektir. mod_disk_cache
+ kullanıyorsanız Åunları aklınızdan çıkarmayın: (1) Apache güvenlik
+ güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
+ Mümkünse suEXEC kullanarak CGI süreçlerini
+ Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıÅtırın.
Apache bir önbellekli vekil sunucu olarak çalıÅtıÄında önbellek + zehirlenmesi adı verilen sorunla karÅılaÅılma olasılıÄı vardır. + Ãnbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlıŠ(ve + genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü + betimlemek için yaygın olarak kullanılan bir terimdir.
+ +ÃrneÄin Apacheânin çalıÅtıÄı sistemin kullandıÄı DNS sunucuları DNS + önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan + Apacheânin istekleri almak için baÅvuracaÄı kaynak sunucunun yerini + deÄiÅtirebilir. DiÄer bir örnek, HTTP istek kaçakçılıÄı adı verilen + bir saldırı türüdür.
+ +Bu belge HTTP istek kaçakçılıÄını derinliÄine incelenmesi için uygun + yer deÄildir (böyle kaynaklara arama motorunuzla eriÅebilirsiniz). + Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriÄi + tamamen denetim altına almak amacıyla kaynak sunucudaki bir açıÄı + istismar etmeye yönelik bir dizi istek yapılabileceÄinin olasılık + dahilinde olduÄunu bilmenizde yarar vardır.
+ +İlgili Modüller | İlgili Yönergeler |
---|---|
Bir dosyanın açılması iÅlemi, özellikle de aÄ dosya sistemlerinde + bulunan dosyalar için önemli bir gecikme kaynaÄı olabilir. Ãnbellekte, + çok sunulan dosyaların kendilerinin deÄil, açık dosya tanıtıcılarının + saklanması Apacheâyi bu tür gecikmelerden koruyabilir. Apacheâde iki tür + dosya tanıtıcı önbelleklemesi yapılabilmektedir.
+ +CacheFile
yönergesi ileApacheâde mevcut önbelleklemenin en temel Åekli
+ mod_file_cache
tarafından saÄlanan dosya tanıtıcı
+ önbelleklemesidir. Bu önbellek türü dosyaların kendilerini deÄil açık
+ dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
+ önbelleklenmesi, CacheFile
yönergesi yapılandırma dosyasında belirtilerek
+ saÄlanabilir.
CacheFile
yönergesi
+ belirtilen dosyanın Apache baÅlatıldıÄında açılmasını ve dosya için
+ yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
+ saÄlar.
+ CacheFile /usr/local/apache2/htdocs/index.html
+
Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız + iÅletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili + sınırlamasını uygun bir deÄere ayarlamanız gerekebilir.
+ +CacheFile
yönergesini
+ kullandıÄınız takdirde dosya içeriÄindeki deÄiÅiklikleri anında isteÄe
+ yansıtamazsınız. Apache dosyayı ilk baÅlatıldıÄındaki haliyle
+ sunar.
EÄer Apache çalıÅırken dosya silinmiÅse Apache ilk baÅlatıldıÄındaki + haline iliÅkin dosya tanıtıcıyı saÄlamaya ve dolayısıyla dosya + içeriÄini sunmaya devam edecektir. Yani, dosya silinmiÅ ve artık dosya + sisteminde görünmüyor olsa bile Apache durdurulup dosya tanıtıcıları + kapanmadıkça dosyaların silinmesiyle açılan yer serbest + kalmayacaktır.
+ + +CacheEnable
yönergesi ilemod_mem_cache
modülünün ayrıca, CacheEnable
yönergesi üzerinden etkin
+ kılınabilen kendine özgü bir dosya tanıtıcı önbellekleme Åeması
+ vardır.
+ CacheEnable fd /
+
mod_cache
ânin devreye girdiÄi her iÅlemde olduÄu
+ gibi bu tür dosya tanıtıcı önbelleklemesi de akıllıca yapılır ve
+ önbellekteki içerik zaman aÅımına uÄradıÄı halde sunulmaya devam
+ edilmez.
İlgili Modüller | İlgili Yönergeler |
---|---|
İçeriÄin sistem belleÄinden sunulması içerik sunmanın evrensel olarak + en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha + kötüsü uzak bir aÄdan okunması bellekten okumayla karÅılaÅtırılamayacak + ölçüde yavaÅ iÅlemlerdir. Disk denetleyiciler genellikle fiziksel + süreçleri denetlerler. AÄ eriÅimi ise band geniÅliÄi sınırlamalarından + etkilenir. Halbuki bellek eriÅimi sadece nano saniyeler mertebesinde + gerçekleÅir.
+ +Sistem belleÄi en pahalı saklama ortamı olması sebebiyle en verimli + Åekilde kullanımı önemlidir. Dosyaları sistem belleÄinde saklamakla + sistemin kullanabileceÄi bellek miktarını azaltmıŠolursunuz. İÅletim + sistemi önbelleklemesinde göreceÄiniz gibi bu öyle basit bir konu + deÄildir. Apacheânin kendi kullandıÄı belleÄin bir kısmını önbellek + olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde + iÅletim sistemi belleÄin yetmediÄi noktada belleÄi diske + takaslayacaÄından istenen baÅarım artıÅı saÄlanamayacaktır.
+ +Günümüz iÅtetim sistemlerinin hemen hemen tamamında bellek içi + dosya/veri saklama iÅlemlerini çekirdek yönetir. Bu güçlü bir + özelliktir ve iÅletim sistemlerinin büyük çoÄunluÄu bunu böyle yapar. + ÃrneÄin, Linuxâta bir dosyanın ilk defa okunduÄunda ve ikinci kez + okunduÄunda iÅlemcinin ne kadar meÅgul edildiÄine bakalım:
+ +
+ colm@coroebus:~$ time cat testfile > /dev/null
+ real 0m0.065s
+ user 0m0.000s
+ sys 0m0.001s
+ colm@coroebus:~$ time cat testfile > /dev/null
+ real 0m0.003s
+ user 0m0.003s
+ sys 0m0.000s
+
Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya + çıkmaktadır. Bunun sebebi çekirdeÄin dosya içeriÄini bellek daha + güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.
+ +Sisteminizde yeterince yedek bellek olduÄundan eminseniz, bu + önbellekte daha fazla dosya saklanacaÄından emin olabilirsiniz. + Bundan, önbelleÄin sistem belleÄinde verimli biçimde tutulması için + Apacheâde ek bir yapılandırmaya gidilmesinin gerekmediÄi sonucu + çıkarılabilir.
+ +Bundan baÅka, iÅletim sistemi dosyaların deÄiÅtiÄi ve silindiÄi + zamanları bildiÄinden bu tür dosyaların içerikleri gerektiÄinde + önbellekten kendiliÄinden silinmiÅ olur. Bellek içinde dosya saklarken + dosyaların deÄiÅtirilme zamanlarını bilme olanaÄı olmadıÄından bu + durum Apacheâye büyük yarar saÄlar.
+ + +İÅletim sisteminin dosyaların önbelleklenmesi için saÄladıÄı bunca + yarara ve baÅarım artıÅına karÅın bellek içinde dosya önbelleklemenin + Apache tarafından yerine getirilmesinin daha iyi olacaÄı bazı durumlar + vardır.
+ +Ãncelikle, iÅletim sistemi sadece bildiÄi dosyaları önbellekler (veya + önbelleklediÄi dosyaları bilir). EÄer Apacheâyi bir vekil sunucu olarak + çalıÅtırıyorsanız, önbelleklediÄiniz dosyalar yerel olarak saklanmadan + uzaktan sunulabilir. Ancak bellekiçi önbelleklemenin saÄladıÄı hız + artıÅının dayanılmaz çekiciliÄine karÅı koyamıyorsanız, Apacheânin kendi + bellekiçi önbelleklemesine ihtiyacınız var demektir.
+ +MMapStatic
yönergesi ilemod_file_cache
modülü, bir duraÄan dosyanın
+ içeriÄini sunucunun baÅlatılması sırasında (mmap sistem çaÄrısıyla)
+ belleÄe eÅlenmesini mümkün kılmak için MMapStatic
yönergesini saÄlar.
+ Apache bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
+ içeriÄini kullanacaktır.
+ MMapStatic /usr/local/apache2/htdocs/index.html
+
CacheFile
yönergesinde
+ olduÄu gibi bu dosyalarda Apache baÅlatıldıktan sonra yapılacak bir
+ deÄiÅiklikten Apacheânin haberi olmayacaktır.
MMapStatic
yönergesi
+ ayırdıÄı belleÄin toplam miktarı ile ilgilenmez, dolayısıyla
+ yönergenin aÅırı kullanımından kaçınmalısınız. Apacheânin çocuk
+ süreçlerinin her biri bu belleÄin kendilerine ait birer kopyasını
+ yapacaÄından belleÄe eÅlenen dosyaların çok yer kaplamaması büyük önem
+ taÅımaktadır; aksi takdirde iÅletim sistemi belleÄi diske
+ takaslayacaÄından beklenen fayda saÄlanamayacaktır.
mod_mem_cache
modülü ilemod_mem_cache
modülü HTTP belirtimine uygun olarak
+ bellekiçi önbelleklemeyi akıllıca uygular. Ayrıca yüksek belleÄi
+ doÄrudan kullanabildiÄinden MMap desteÄi olmayan
+ sistemlerde bile bellekiçi önbellekleme yapabilir.
Bu tür önbellekleme Åöyle etkin kılınabilir:
+ +
+ # Bellekiçi önbelleklemeyi etkin kılalım
+ CacheEnable mem /
+
+ # Ãnbellek 1 Megabayttan büyük olmasın
+ MCacheSize 1024
+
İlgili Modüller | İlgili Yönergeler |
---|---|
mod_disk_cache
modülü önbelleklemenin
+ mod_cache
için disk üzerinde yapılmasını mümkün kılar.
+ mod_mem_cache
modülünde olduÄu gibi bu önbellekleme de
+ akıllıca yapılır ve önbellekteki içerik sadece geçerli kabul edildiÄi
+ sürece sunulabilir.
Modül bu amaçla genelde Åöyle kullanılır:
+ +
+ CacheRoot /var/cache/apache/
+ CacheEnable disk /
+ CacheDirLevels 2
+ CacheDirLength 1
+
En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup + iÅletim sisteminin saÄladıÄı bellekiçi önbelleklemeden de ayrıca + faydalanılmıŠolur. Bu bakımdan, dosyalar disk üzerinde saklansa bile + sıkça eriÅilen dosyalar iÅletim sistemi sayesinde aslında bellekten + sunulmuÅ olacaklardır.
+ +mod_disk_cache
öÄeleri önbellekte saklamak için
+ istek yapılan URLânin 22 karakterlik özetini oluÅturur. Bu özet, çok
+ sayıda URLânin aynı özeti oluÅturmaması için konak ismi, protokol,
+ port ve varsa CGI argümanlarından oluÅur.
Ãzeti oluÅturan karakterler 64 karakterlik bir karakter kümesinden
+ seçildiÄinden oluÅturulması olası farklı özet sayısı 64^22âdir.
+ ÃrneÄin, bir URLânin xyTGxSMO2b68mBCykqkp1w
gibi bir
+ özeti olabilir. Bu özet, bu URL ile eriÅilen dosyalar önbellek içinde
+ saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
+ yetinilmez ve içerik CacheDirLevels
ve CacheDirLength
yönergelerinin
+ deÄerlerine göre önce dizinlere ayrılır.
CacheDirLevels
+ yönergesi kaç alt seviye dizin olacaÄını belirler. ÃrneÄin, yukarıdaki
+ özete sahip bir dosyanın isminin baÅına yukarıdaki yapılandırma
+ örneÄine uygun olarak
+ /var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w
gibi bir önek
+ getirilebilirdi.
Bu tekniÄin asıl amacı belli bir dizin içinde bulunabilecek
+ dosyaların ve alt dizinlerin sayısını düÅük tutmaktır. Bu sayının
+ büyük olması çoÄu iÅletim sisteminde baÅarımın düÅmesine sebep olur.
+ CacheDirLength
+ yönergesi "1" deÄeriyle kullanıldıÄında her dizin altında en fazla 64
+ alt dizin veya dosya açılabilir. "2" deÄeriyle kullanıldıÄında ise bu
+ sayı 64^2âye yükselir ve böyle artarak gider. İyi bir sebebiniz
+ olmadıkça CacheDirLength
için deÄer olarak
+ "1" belirtmenizi öneririz.
CacheDirLevels
+ yönergesine atanacak deÄer önbellekte saklamayı düÅündüÄünüz olası
+ dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduÄu gibi "2"
+ deÄerini belirtirseniz, toplamda en fazla 4096 dizin oluÅturulabilir.
+ 1 milyon dosyanın önbelleklendiÄi bir durumda bu, her dizinde yaklaÅık
+ olarak 245 önbelleklenmiŠURL demektir.
Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL + hakkındaki temel verilerden oluÅan ".header" dosyasıdır, diÄeri ise + sunulacak içeriÄin bire bir kopyası olan ".data" dosyasıdır.
+ +"Vary" baÅlıÄı üzerinden içeriÄin uzlaÅıldıÄı durumda URL için bir + ".vary" dizini oluÅturulur. Bu dizin her biri farklı bir uzlaÅıma ait + çok sayıda ".data" dosyası içerebilir.
+ + +mod_disk_cache
zaman aÅımına uÄrayan önbellekli
+ içeriÄi silse de önbelleÄin toplam boyu ve ne kadar boÅ bellek kaldıÄı
+ hakkında bilgi vermez.
Bunun yerine Apache önbellek içeriÄini düzenli aralıklarla
+ temizleyebilmeniz için htcacheclean
adında bir araç
+ içerir. Ãnbellek için azami ne kadar yer kullanılacaÄının ve bunun
+ üzerinde htcacheclean
âi hangi sıklıkta
+ çalıÅtırılacaÄının tespiti biraz karmaÅık bir iÅlem olup uygun deÄerler
+ genellikle deneme yanılma yoluyla bulunur.
htcacheclean
iki iÅlem kipine sahiptir. Kalıcı bir
+ artalan süreci olarak çalıÅabileceÄi gibi cron üzerinden belli
+ aralıklarla da çalıÅtırılabilir. Ãok büyük (onlarca GB) önbelleklerde
+ htcacheclean
âin iÅini bitirmesi 1 saatten fazla
+ sürebileceÄinden, cron ile çalıÅtırma durumunda aynı anda birden fazla
+ kopyanın çalıÅıyor durumda olmaması için
+ htcacheclean
âin çalıÅtırılma aralıÄını iyi
+ belirlemek gerekir.
+
+ Åekil 1:
+ ÃnbelleÄin büyümesi ve düzenli aralıklarla temizlenmesi.
mod_disk_cache
ne kadar önbellek alanı kullandıÄı
+ ile ilgili bir bilgi vermediÄinden htcacheclean
âin
+ bir temizlik sonrası yeterince büyük bir geniÅleme alanı kalacak
+ Åekilde yapılandırılması önemlidir.
Available Languages: en | fr | ja | - ko
+ ko | + tr @@ -46,7 +47,6 @@ Negotiationforce-no-vary
environment variable.
-For more information about content negotiation, see Alan - J. Flavell's Language - Negotiation Notes. But note that this document may not be - updated to include changes in Apache 2.0.
Langues Disponibles: en | fr | ja | - ko
+ ko | + tr @@ -46,7 +47,6 @@ transparenteforce-no-vary
.
-Pour plus d'informations à propos de la négociation de contenu, voir le - document d'Alan J. Flavell Language - Negotiation Notes. Mais gardez à l'esprit que ce document ne tiendra - peut-être pas compte des changements intervenus dans Apache 2.0.
Available Languages: en | fr | ja | - ko
+ ko | + trforce-no-vary
ç°å¢å¤æ°ã
è¨å®ãã¾ãã
-ã³ã³ãã³ããã´ã·ã¨ã¼ã·ã§ã³ã«é¢ããè¿½å æ å ±ã¯ã - Alan J. Flavell ããã®Language - Negotiation Notes ãã覧ä¸ãããã§ããã - Apache 2.0 ã§ã®å¤æ´ç¹ãå«ãããã«ã¯æ´æ°ããã¦ããªããããããªã - ã¨ãããã¨ã«æ³¨æãã¦ãã ããã
°¡´ÉÇÑ ¾ð¾î: en | fr | ja | - ko
+ ko | + trforce-no-vary
ȯ°æº¯¼ö¸¦ ¼³Á¤ÇÑ´Ù.
-³»¿ëÇù»ó¿¡ ´ëÇÑ ´Ù¸¥ Á¤º¸´Â Alan J. Flavell°¡ ¾´ Language - Negotiation Notes¸¦ Âü°íÇ϶ó. ±×·¯³ª ÀÌ ¹®¼´Â ¾ÆÁ÷ - ¾ÆÆÄÄ¡ 2.0ÀÇ º¯È¸¦ ¹Ý¿µÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù.
Apache HTTP Sunucusu Sürüm 2.2
+Apache, içerik uzlaÅımını HTTP/1.1 belirtiminde bahsedildiÄi Åekliyle + destekler. Bir özkaynaÄın en iyi gösterimini, tarayıcının saÄladıÄı + karakter kodlaması, karakter kümesi, dil, ortam türü gibi kullanıcı + tercihlerine baÄlı olarak seçebilir. Ayrıca, tarayıcının kullanıcı + tercihlerini tam yansıtamadıÄı durumlarda istekleri daha akıllıca ele + alabilmeyi saÄlayacak bir takım özelliklere de sahiptir.
+ +İçerik uzlaÅımı öntanımlı olarak derlenen
+ mod_negotiation
modülü tarafından saÄlanır.
Bir özkaynaÄın bir çok farklı gösterimi olabilir. ÃrneÄin, bir belgenin + farklı ortam türleri ve/veya farklı diller için gösterimleri olabilir. + En uygun seçimi yapmanın tek yolu kullanıcıya bir liste verip seçmesini + istemektir. Bununla birlikte sunucunun bu seçimi kendiliÄinden yapması + da mümkündür. Tarayıcılar isteÄin bir parçası olarak kullanıcı + tercihlerini de gönderdiÄinden bu istendiÄi gibi çalıÅır. ÃrneÄin bir + tarayıcı, kullanıcısınının mümkünse Fransızca içerik tercih ettiÄini + yoksa İngilizce içeriÄe de razı olabileceÄini belirtebilirdi. + Tarayıcılar bu tercihleri baÅlıkta belirtirler. Tarayıcı sadece Türkçe + içerik istendiÄini Åöyle belirtebilirdi:
+ +Accept-Language: tr
Bu tercihin yerine getirilebilmesininin sadece, desteklenen diller + arasında bu dilin varlıÄına ve istenen belgenin bu dilde bir + gösteriminin bulunmasına baÄlı oluÅuna dikkat ediniz.
+ +Daha karmaÅık bir istek örneÄi olarak, tarayıcının Fransızca ve + İngilizce içerik kabul etmeye ayarlandıÄını fakat Fransızcayı tercih + ettiÄini ve çeÅitli ortam türlerini kabul etmekle birlikte salt metin ve + diÄer metin türlerinden ziyade HTML tercih ettiÄini, ayrıca, diÄer ortam + türleri üzerinde GIF veya JPEG tercih ettiÄini fakat baÅka çare yoksa + her ortam türüne de izin verdiÄini belirtiyor olsun:
+ +
+ Accept-Language: fr; q=1.0, en; q=0.5
+ Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg;
+ q=0.6, image/*; q=0.5, */*; q=0.1
+
Apache, HTTP/1.1 belirtiminde tanımlanan Åekliyle âsunucu yönetimindeâ
+ içerik uzlaÅımını destekler. Accept
,
+ Accept-Language
, Accept-Charset
ve
+ Accept-Encoding
istek baÅlıklarını tamamen destekler.
+ Apache ayrıca, RFC 2295 ve RFC 2296âda tanımlanan bir deneysel uzlaÅım
+ olarak âÅeffafâ içerik uzlaÅımını da destekler. Fakat âözellik
+ uzlaÅımınıâ bu RFCâlerde tanımlandıÄı gibi desteklemez.
Bir özkaynak bir URI (RFC 2396) tarafından betimlenen + kavramsal bir öÄedir. Apache gibi bir HTTP sunucusu, ortam türü, + karakter kümesi, kodlama ve saire ile tanımlanmıŠbir bayt dizisi + Åeklindeki her gösterimiyle, özkaynaklara kendi isim alanları dahilinde + eriÅim saÄlar. Her özkaynaÄın aynı anda bir veya daha fazla gösterimi + mevcut olabileceÄi gibi hiç mevcut olmayabilir de. EÄer çok sayıda + gösterim mevcutsa, bu özkaynaÄın uzlaÅılabilir + olduÄundan ve her gösteriminin bir çeÅitlilik + oluÅturduÄundan bunun da uzlaÅımın boyutlarından + kaynaklandıÄından bahsedilebilir.
+Bir özkaynak üzerinde uzlaÅılırken gösterim çeÅitlerinin her biri + hakkında sunucuya bilgi verilmesi gerekir. Bu iki yolla yapılabilir:
+ +*.var
dosyası
+ gibi).Bir türeÅlem, type-map
eylemcisi ile iliÅkili bir belgedir
+ (ya da eski Apache yapılandırmaları ile geriye uyumluluk için,
+ application/x-type-map
MIME türünde
+ bir belgedir). Bu özelliÄi kullanmak için, yapılandırmada bir tür
+ eÅleyici olarak bir dosya ismi uzantısı için bir type-map
+ eylemcisi tanımlamalısınız. Bu, sunucu yapılandırma dosyasında en iyi
+ Åöyle yapılabilir:
AddHandler type-map .var
TüreÅlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde
+ olmalı ve her gösterim çeÅidi için bir girdi içermelidir; bu girdiler
+ ardarda belirtilen HTTP biçem baÅlık satırlarından oluÅur. Farklı
+ gösterimlerin girdileri bir boÅ satırla diÄerlerinden ayrılır. Aynı
+ girdi içinde boÅ satır kullanılamaz. Bir eÅlem dosyasını bir birleÅik
+ öÄenin tamamı için bir girdi ile baÅlatmak adet olmuÅtur (ise de, bu
+ gerekli deÄildir, hele yoksayılacaksa hiç gerekli deÄildir). EÅlem
+ dosyası için aÅaÄıda bir örnek verilmiÅtir. Dosya misal
+ isimli bir özkaynak hakkında olduÄundan dosyaya misal.var
+ ismi verilebilir.
+ URI: misal
+
+ URI: misal.en.html
+ Content-type: text/html
+ Content-language: en
+
+ URI: misal.fr.de.html
+ Content-type: text/html;charset=iso-8859-2
+ Content-language: fr, de
+
Ayrıca, bir türeÅlem dosyasının MultiViews
etkin olsa bile
+ dosya ismi uzantısına göre öncelik alacaÄına dikkat ediniz. EÄer
+ gösterimler bu örnekteki resim dosyasında olduÄu gibi farklı kaynak
+ üstünlüklerine sahipseler, ortam türünün qs
parametresi
+ kullanılarak kaynak üstünlükleri belirtilebilir:
+ URI: misal
+
+ URI: misal.jpeg
+ Content-type: image/jpeg; qs=0.8
+
+ URI: misal.gif
+ Content-type: image/gif; qs=0.5
+
+ URI: misal.txt
+ Content-type: text/plain; qs=0.01
+
qs
deÄerleri 0.000-1.000 deÄer aralıÄı içinde
+ belirtilebilir. 0.000 qs
deÄerine sahip gösterimin asla
+ seçilmeyeceÄine dikkat ediniz. Bir qs
deÄeri belirtilmeyen
+ gösterimlerin kaynak üstünlüÄü 1.000 kabul edilir. qs
+ parametresinin belirttiÄi deÄer istemcinin yeteneklerinden baÄımsız
+ olarak olası gösterimler arasında göreli bir üstünlük ifade eder.
+ ÃrneÄin bir fotoÄraf sözkonusu olduÄunda bir JPEG dosyasının kaynak
+ üstünlüÄü bir ASCII çiziminkinden yüksek olacaktır. DiÄer taraftan özgün
+ resim bir ASCII çizim olduÄu takdirde, ASCII çizim, bir JPEG gösterimine
+ göre öncelikli olacaktır. Bu nedenle qs
deÄeri özkaynaÄın
+ doÄasına bakarak belirlenir.
Tanınan baÅlıkların tam listesini mod_negotation modülünün + belgesinde bulabilirsiniz.
+ + +MultiViews
, httpd.conf
dosyasındaki veya
+ (AllowOverride
yönergesinin
+ deÄerine baÄlı olarak) .htaccess
dosyalarındaki <Directory>
, <Location>
veya <Files>
bölümleri içinde
+ Options
yönergeleri ile
+ belirtilebilen, dizine özgü bir seçenektir. Yalnız, dikkatli olun,
+ Options All
yaparak MultiViews
seçeneÄini
+ etkin kılamazsınız; seçeneÄi ismiyle açıkça belirtmelisiniz.
MultiViews
Åöyle etki eder: Sunucudan,
+ MultiViews
seçeneÄinin etkin olduÄu /bir/dizin
+ dizininden filanca
dosyası için bir istekte bulunulmuÅsa
+ fakat dizinde bu dosya yoksa, sunucu dizin içeriÄini
+ filanca.*
dosyaları için tarar ve bu dosyalar için
+ istemcinin ismiyle talep ettiÄi ortam türlerini ve kodlamaları
+ kullanarak bir türeÅlem dosyası uydurup bu gösterimler arasından
+ istemcinin gereksinimlerine en uygun gösterimi seçer.
MultiViews
ayrıca, sunucunun bir dizin içeriÄini
+ listelemeye çalıÅtıÄı durumda DirectoryIndex
yönergesi ile belirtilen dosya için de bir
+ arama tertipleyebilir. EÄer yapılandırma dosyalarında
DirectoryIndex index
Åeklinde bir atama varsa ve dizinde index.html
ve
+ index.html3
dosyaları varsa sunucu bunlar arasından hakem
+ sıfatıyla bir seçim yapacaktır; ama bu ikisi yerine dizinde sadece
+ index.cgi
mevcutsa sunucu sadece bu dosyayı
+ çalıÅtıracaktır.
Okunan dizinde bulunan dosyalar arasında mod_mime
+ tarafından tanınan karakter kümesi, içerik türü, dil ve kodlama
+ baÅlıklarına uygun gösterim uzantılarından birine sahip bir dosya yoksa
+ sonuç MultiViewsMatch
+ yönergesiyle yapılan tanıma baÄlı olur. Bu yönerge hangi diÄer dosya
+ uzantılarının, eylemcilerin veya süzgeçlerin çok gösterimli uzlaÅımla
+ ilintileneceÄini belirler.
Apacheânin, bir türeÅlem dosyası veya dizin içindeki bir dosya + sayesinde belli bir özkaynaÄın gösterim çeÅitlerinin bir listesini elde + ettikten sonra âen uygunâ gösterime karar vermek için kullanabileceÄi + iki yöntem vardır. Apacheânin içerik uzlaÅım özelliklerinin kullanımı + sırasında uzlaÅımın nasıl yerine getirileceÄi ile ilgili ayrıntıları + bilmek aslında gerekli deÄildir. Bununla birlikte belgenin kalanında bu + konu açıklanmaya çalıÅılmıÅtır.
+ +İki uzlaÅım yöntemi vardır:
+ +Boyut | + +Açıklama | +
---|---|
Ortam Türü | + +Tarayıcı ortam türü tercihlerini Accept baÅlık alanı
+ ile belirtir. Her öÄenin kendine özgü bir üstünlük katsayısı
+ olabilir. Gösterimin açıklaması da ayrıca bir kaynak üstünlüÄüne
+ (qs parametresi) sahip olabilir. |
+
Dil | + +Tarayıcı dil tercihlerini Accept-Language baÅlık
+ alanı ile belirtir. Her öÄenin kendine özgü bir üstünlük katsayısı
+ olabilir. Gösterimler bir kaç dilde olabileceÄi gibi hiç bir dille
+ iliÅkilendirimemiÅ de olabilir. |
+
Kodlama | + +Tarayıcı kodlama tercihlerini Accept-Encoding baÅlık
+ alanı ile belirtir. Her öÄenin kendine özgü bir üstünlük katsayısı
+ olabilir. |
+
Karakter Kümesi | + +Tarayıcı karakter kümesi tercihlerini Accept-Charset
+ baÅlık alanı ile belirtir. Her öÄenin kendine özgü bir üstünlük
+ katsayısı olabilir. Gösterim çeÅitleri karakter kümesini ortam
+ türünün bir parametresi olarak belirtebilirler. |
+
Apache, tarayıcıya döndürülecek en uygun gösterim çeÅidini (varsa) + seçmek için aÅaÄıdaki algoritmayı kullanabilir. Bu algoritma pek de + yapılandırılabilir deÄildir. Åöyle çalıÅır:
+ +Accept
baÅlıÄındaki üstünlük katsayısı ile
+ gösterimin ortam türünde belirtilen kaynak üstünlüÄünün çarpımı en
+ büyük olan gösterim çeÅidi seçilir.Accept-Language
baÅlıÄındaki dil
+ sıralamasına bakılır, aksi takdirde LanguagePriority
+ yönergesi ile atanmıÅsa oradaki dil sıralamasına bakılır.Accept-Charset
baÅlık satırında belirtilene bakarak
+ en uygun karakter kümesine sahip gösterim çeÅitleri seçilir.
+ Alenen dıÅlanmadıkça ISO-8859-1 kabul edilebilir karakter
+ kümesidir. text/*
ortam türüne sahip gösterim
+ çeÅitlerinden belli bir karakter kümesi ile iliÅkilendirilmemiÅ
+ olanların karakter kümesinin ISO-8859-1 olduÄu varsayılır.Vary
âye uzlaÅım boyutları atanır (tarayıcı ve
+ arabellekler özkaynaÄı kaydederken bu bilgiyi kullanırlar)
+ ve algoritma sonlandırılır.Vary
baÅlıÄında gösterim çeÅitliliÄinin
+ boyutları belirtilir.Apache bazen yukarıdaki Apache uzlaÅım algoritmasının kesin sonucunun
+ beklenenden farklı olması için üstünlük deÄerleriyle oynar. Bunu tam ve
+ doÄru bilgi göndermeyen tarayıcılar için algoritmadan en iyi sonucu elde
+ etmek amacıyla yapar. Bazen günümüzün en tanınmıŠtarayıcıları bile çoÄu
+ durumda yanlıŠbir seçimle sonuçlanmayacaksa Accept
baÅlık
+ bilgilerini göndermemektedir. EÄer tarayıcı eksiksiz ve doÄru bilgi
+ gönderirse Apache bu deÄerlerle oynamayacaktır.
Accept:
istek baÅlıÄı ortam türü tercihlerini yansıtır.
+ Ayrıca, * bir dizge ile eÅleÅmek üzere "image/*" veya "*/*" gibi ortam
+ türü kalıpları da içerebilir. Dolayısıyla Åöyle bir istek,
Accept: image/*, */*
diÄer türler gibi "image/" ile baÅlayan ortam türlerini kabul + edilebilir kılacaktır. Bazı tarayıcılar ortam türlerini örtük olarak + elde etmek amacıyla hep bu tür kalıplar gönderirler. Ãrnek:
+ +
+ Accept: text/html, text/plain, image/gif, image/jpeg, */*
+
Bunun amacı, açıkça listelenmiÅ türlerin tercih edildiÄini, fakat + farklı gösterimler varsa onların da kabul edilebileceÄini belirtmektir. + Ãstünlük deÄerlerini doÄrudan kullanarak tarayıcılar gerçekte ne + istediklerini Åuna benzer Åekilde belirtebilirler:
+ +
+ Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
+
Açıkça belirtilen türler için üstünlük katsayısı belirtilmemiÅtir, + dolayısıyla üstünlük katsayılarının 1.0 (en yüksek) olduÄu + varsayılmaktadır. */* kalıbı 0.01 gibi çok daha düÅük bir öncelik + belirtmektedir. Bu bakımdan, ancak, açıkça belirtilen türlerden + hiçbirinin bulunmaması halinde diÄer türler eÅleÅecektir.
+ +EÄer Accept:
baÅlıÄı hiçbir q
+ katsayısı içermiyorsa ve baÅlıkta "*/*" belirtilmiÅse, Apache istenen
+ davranıÅı taklit etmek için bu kalıba 0.01 katsayısını atar. Keza
+ "type/*" kalıbına da 0.02 katsayısını atar (yani, */* kalıbına göre
+ tercihli olur). EÄer Accept:
alanındaki her ortam türü bir
+ q
katsayısı içeriyorsa bu özel deÄerler uygulanmaz.
+ Dolayısıyla gerekli bilgiyi açıkça bildiren tarayıcılardan gelen
+ istekler umulduÄu gibi iÅlem görecektir.
Apache 2.0âdan itibaren, uzlaÅım algoritmasına, bir eÅleÅme bulmak + konusunda algoritma baÅarılı olamadıÄı takdirde hoÅ bir son çareye izin + vermek için bazı istisnalar eklenmiÅtir.
+ +İstemci sunucudan bir sayfa istediÄinde, sunucu, tarayıcı tarafından
+ gönderilen Accept-language
baÅlıÄıyla eÅleÅen tek bir sayfa
+ bulamadıÄı takdirde istemciye ya âKabul edilebilir bir gösterim çeÅidi
+ yokâ ya da âÃok sayıda seçim belirtilmiÅâ yanıtını döndürür. Bu hata
+ iletilerinden kaçınmak için bu gibi durumlarda Apache
+ Accept-language
baÅlıÄını yoksaymaya ayarlanabilir. Böylece
+ istemcinin isteÄine tam olarak uymasa da bir belge saÄlanır. Bu hata
+ iletilerinin birini veya her ikisini de geçersiz kılmak için ForceLanguagePriority
yönergesi
+ kullanılabilir ve sunucunun kararını LanguagePriority
yönergesine
+ dayanarak vermesi saÄlanabilir.
Sunucu ayrıca, tam bir eÅleÅme bulunmadıÄı zaman lehçelerle de eÅleÅme
+ arayabilir. ÃrneÄin, bir istemci Britanya İngilizcesi
+ (en-GB
) ile yazılmıŠbelgeler için istekte bulunursa,
+ sunucu normalde HTTP/1.1 standardına göre bir belgenin basitçe
+ en
olarak imlenmesine izin vermez. (Bir okuyucu Britanya
+ İngilizcesini anlıyor ama genel İngilizceyi anlamıyor diye
+ Accept-Language
baÅlıÄında en
deÄil de
+ en-GB
âyi belirtmesinin hemen hemen daima bir yapılandırma
+ hatasına yol açacaÄına dikkat ediniz. Maalesef, mevcut istemcilerin çoÄu
+ öntanımlı yapılandırmalarında buna benzer Åeyler yapmaktadır.) Bununla
+ birlikte, baÅka bir dille eÅleÅme mümkün deÄilse ve sunucu âKabul
+ edilebilir bir gösterim çeÅidi yokâ hatasını döndürmeye hazırsa veya
+ LanguagePriority
son
+ çaresine ayarlanmıÅsa alt küme belirtimini yok sayacak ve
+ en
belge isteklerine en-GB
belgelerle yanıt
+ verecektir. Apache, lehçenin üyesi olduÄu anadili, istemcinin kabul
+ edilebilir diller listesine örtük olarak düÅük bir üstünlük deÄeri ile
+ ekler. Yalnız Åuna dikkat edin, eÄer istemci tercihini "en-GB; q=0.9,
+ fr; q=0.8" olarak belirtirse ve sunucuda sadece "en" ve "fr" belgeleri
+ varsa sunucu "fr" belge ile yanıt verecektir. HTTP/1.1 belirtimi ile
+ uyumluluÄu saÄlamak ve düzgün yapılandırılmıŠistemcilerle gerektiÄi
+ gibi çalıÅabilmek için bu gereklidir.
GeliÅmiÅ tekniklerin (çerezler, özel URL yolları gibi) desteklenmesi
+ sırasında, kullanıcının tercih ettiÄi dili saptamak için Apache 2.0.47
+ sürümünden beri mod_negotiation
modülü
+ prefer-language
ortam deÄiÅkenini
+ tanımaktadır. DeÄiÅken mevcutsa ve uygun bir dil yaftası içeriyorsa
+ mod_negotiation
uygun gösterimi seçmeyi deneyecektir.
+ Böyle bir gösterim çeÅidi mevcut deÄilse normal uzlaÅım iÅlemi
+ uygulanacaktır.
+ SetEnvIf Cookie "language=(.+)" prefer-language=$1
+ Header append Vary cookie
+
Apache, Åeffaf içerik uzlaÅımı protokolünü (RFC 2295) Åöyle geniÅletir:
+ Sadece içerik kodlamasına özgü olmak üzere gösterim çeÅidi listelerinde
+ gösterim çeÅitlerini imlemek için yeni bir {encoding ..}
+ elemanı kullanılır. RVSA/1.0 algoritmasının (RFC 2296) gerçeklenimi,
+ listedeki kodlanmıŠgösterim çeÅitlerini tanımak ve onları
+ Accept-Encoding
baÅlık alanıyla ilgili olarak kabul
+ edilebilir kodlamalara aday gösterim çeÅitleri olarak kullanmak üzere
+ geniÅletilmiÅtir. RVSA/1.0 gerçeklenimi, en uygun gösterim çeÅidi
+ seçiminin öncesinde hesaplanmıŠüstünlük katsayısını virgülden sonra beÅ
+ haneye yuvarlamaz.
EÄer dil uzlaÅımı kullanıyorsanız ve birden fazla dosya ismi uzantısına + sahip dosyalarınız varsa uzantıların sıralamasının normalde uygunsuz + düÅtüÄü farklı isimlendirme yaklaÅımlarında bulunabilirsiniz (ayrıntılar + için mod_mime belgesine + bakınız).
+ +Bir MIME türü uzantısına sahip bir dosyanın (html
gibi),
+ kodlanmıŠbir gösterimi (gz
gibi) mevcut olabilir. Bu
+ dosyanın ayrıca farklı dillerdeki gösterimleri için de bir uzantısı
+ (en
gibi) olabilir.
Ãrnekler:
+ +HiperbaÄ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:
+ +Dosya ismi | + +Geçerli HiperbaÄ | + +Geçersiz HiperbaÄ | +
---|---|---|
misal.html.en | + +misal + misal.html |
+
+ - | +
misal.en.html | + +misal | + +misal.html | +
misal.html.en.gz | + +misal + misal.html |
+
+ misal.gz + misal.html.gz |
+
misal.en.html.gz | + +misal | + +misal.html + misal.html.gz + misal.gz |
+
misal.gz.html.en | + +misal + misal.gz + misal.gz.html |
+
+ misal.html | +
misal.html.gz.en | + +misal + misal.html + misal.html.gz |
+
+ misal.gz | +
Yukarıdaki tabloya bakarak hiperbaÄlarda bir dosya ismini uzantısız
+ olarak (misal
gibi) kullanmanın daima mümkün olduÄunu
+ farkedeceksiniz. Böylece br belgenin asıl türünü gizleyebilir ve
+ sonradan bir hiperbaÄ deÄiÅikliÄi yapmaksızın örneÄin
+ html
âden shtml
veya cgi
âye
+ geçebilirsiniz.
HiperbaÄlarda MIME türlerini (misal.html
gibi) kullanmaya
+ devam etmek istiyorsanız dil uzantısı MIME türü uzantısının saÄında
+ kalmalıdır (misal.html.en
gibi).
Bir arabellek, bir gösterimi istek URLâsi ile iliÅkilendirerek saklar. + Böylece, sonradan aynı URL için bir istek yapıldıÄında kaydettiÄi + gösterimi kullanabilir. Fakat özkaynak sunucuyla uzlaÅılan türdeyse + arabelleÄe ilk istenen çeÅit saklanmıŠolacaÄından isteÄe yanlıŠ+ gösterimle yanıt verilmiÅ olacaktır. Bunun olmaması için Apache, normal + olarak içerik uzlaÅımının sonucu olarak döndürülen tüm yanıtları + HTTP/1.0 istemciler tarafından arabelleklenemez olarak imler. Apache + ayrıca, uzlaÅımlı yanıtların arabelleklenmesini mümkün kılan HTTP/1.1 + protokolünü de destekler.
+ +HTTP/1.0 uyumlu istemcilerden (bir tarayıcı veya arabellek) gelen
+ istekler için, uzlaÅıma konu yanıtların arabelleklenmesini mümkün kılmak
+ üzere CacheNegotiatedDocs
yönergesi kullanılabilir. Bu yönerge
+ argümansızdır ve sunucu genelinde veya sanal konakların
+ yapılandırılmasında kullanılabilir. Bunun HTTP/1.1 istemcilerinden gelen
+ isteklere bir etkisi yoktur.
HTTP/1.1 istemciler için, Apache, yanıtın uzlaÅım boyutlarını göstermek
+ üzere bir Vary
HTTP yanıt baÅlıÄı gönderir. Arabellekler bu
+ bilgiyi sonraki istekleri yerel kopyadan sunarken kullanabilirler. Bir
+ arabelleÄin uzlaÅım boyutlarına bakmaksızın yerel kopyasını kullanmaya
+ teÅvik etmek için force-no-vary
ortam deÄiÅkenini etkin kılabilirsiniz.
Apache HTTP Sunucusu Sürüm 2.2
+Bu belge, Apacheâde süzgeç kullanımı hakkındadır.
+İlgili Modüller | İlgili Yönergeler |
---|---|
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Šçok geniÅ bir + uygulama alanı mevcuttur; modules.apache.org ve benzerlerinden temin edilebilecek bu tür + modüllerden bazılarının uygulama alanları:
+ +
+
+
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:
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 sorun çıkarabilmesi sebebiyle kullanımı artık
+ önerilmemektedir. Onun yerine devingen yapılandırma kullanınız.