From: Takashi Sato Date: Thu, 10 Jul 2008 15:13:38 +0000 (+0000) Subject: new Turkish translations X-Git-Tag: 2.3.0~431 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b6f431e754279cc4b395b69e1fb71a1116bebf46;p=apache new Turkish translations Submitted by: Nilgün Belma Bugüner Reviewed by: Orhan Berent git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@675612 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/caching.xml.tr b/docs/manual/caching.xml.tr new file mode 100644 index 0000000000..2abe0fac5f --- /dev/null +++ b/docs/manual/caching.xml.tr @@ -0,0 +1,728 @@ + + + + + + + + + + + Önbellek Kullanım Kılavuzu + + +

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.

+
+ +
+ Giriş + +

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.

+ +
+ +
+ + Önbelleklemeye Bir Bakış + + + + mod_cache + mod_mem_cache + mod_disk_cache + mod_file_cache + + + CacheEnable + CacheDisable + MMapStatic + CacheFile + CacheFile + UseCanonicalName + CacheNegotiatedDocs + + + +

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.

+ +
+ Önbelleğin Hızlandırılması + +

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.

+
+ +
+ Zaman Aşımı Süreleri + +

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

+ +
+ +
+ Şartlı İstekler için Özlü Kılavuz + +

Ö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).

+
+ +
+ Neler Önbelleklenebilir? + +

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:

+ +
    +
  1. Önbellekleme bu URL ile etkin kılınabilmelidir. CacheEnable ve CacheDisable yönergelerine bakınız.
  2. + +
  3. Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.
  4. + +
  5. İstek bir HTTP GET isteği olmalıdır.
  6. + +
  7. İstek bir "Authorization:" başlığı içeriyorsa yanıt önbelleğe + alınmayacaktır.
  8. + +
  9. Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca + "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya + "public" değerlerinden birini içermelidir.
  10. + +
  11. Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir + sorgu dizgesi içeriyorsa yanıt, RFC2616’nın 13.9. bölümünde + açıklandığı gibi bir "Expires:" başlığı içermedikçe yanıt içeriği + önbelleğe alınmayacaktır.
  12. + +
  13. 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.
  14. + +
  15. 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.
  16. + +
  17. Benzer şekilde, 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.
  18. + +
  19. Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir + yanıtın içeriği önbelleğe alınmaz.
  20. +
+
+ +
+ Neler Önbelleklenmemeli? + +

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.

+
+ +
+ Değişken/Uzlaşımlı İçerik + +

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

+
+ +
+ +
+ Güvenlik Kaygıları + +
+ Erişim Denetimi ve Yetkilendirme + +

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.

+
+ +
+ Yerel İstismarcılar + +

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.

+ +
+ +
+ Önbellek Zehirlenmeleri + +

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.

+
+
+ +
+ Dosya Tanıtıcı Önbelleklemesi + + + + mod_file_cache + mod_mem_cache + + + CacheFile + CacheEnable + CacheDisable + + + +

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.

+ +
+ <code>CacheFile</code> yönergesi ile + +

Apache’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.

+
+ +
+ <code>CacheEnable</code> yönergesi ile + +

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

+
+
+ +
+ Sistem Belleğinde Önbellekleme + + + + mod_mem_cache + mod_file_cache + + + CacheEnable + CacheDisable + MMapStatic + + + +

İç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.

+ +
+ İşletim Sistemi Önbelleklemesi + +

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.

+ +
+ <code>MMapStatic</code> yönergesi ile + +

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

+
+ +
+ <code>mod_mem_cache</code> modülü ile + +

mod_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 +
+
+
+ +
+ Disk Üzerinde Önbellekleme + + + + mod_disk_cache + + + CacheEnable + CacheDisable + + + +

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.

+ +
+ Önbellekte Saklamanın Anlamı + +

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.

+
+ +
+ Disk Önbelleğinin Bakımı + +

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.

+
+ +
+ +
diff --git a/docs/manual/content-negotiation.xml.tr b/docs/manual/content-negotiation.xml.tr new file mode 100644 index 0000000000..42b64470c4 --- /dev/null +++ b/docs/manual/content-negotiation.xml.tr @@ -0,0 +1,642 @@ + + + + + + + + + + +İçerik Uzlaşımı + + + +

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.

+
+ +
İçerik Uzlaşımı Hakkında + +

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.

+
+ +
Apache’de İçerik Uzlaşımı + +

Bir özkaynak üzerinde uzlaşılırken gösterim çeşitlerinin her biri + hakkında sunucuya bilgi verilmesi gerekir. Bu iki yolla yapılabilir:

+ +
    +
  • Ya gösterim çeşitlerini içeren dosyaların isimleriyle eşleşmeyi + sağlayan bir tür eşlemi kullanılır (bir *.var dosyası + gibi).
  • + +
  • Ya da sunucu örtük bir dosya ismi kalıbı eşleşmesinin ardından + sonuçlar arasından seçim yapar; buna ‘Çoklu Görünüm’ araması adı + verilir.
  • +
+ +
Bir türeşlem dosyası kullanmak + +

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.

+
+ +
Çoklu Görünümler + +

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.

+
+
+ +
Uzlaşım Yöntemleri + +

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:

+ +
    +
  1. Normal durumda sunucu yönetiminde Apache uzlaşım + algoritması kullanılır. Bu algoritma aşağıda ayrıntılı olarak + açıklanmıştır. Bu algoritma kullanıldığı zaman, Apache, en iyi sonuca + ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’. + Apache’nin bu katsayılarla oynama işini nasıl yaptığı aşağıda daha + ayrıntılı açıklanmıştır.
  2. + +
  3. İstemci bu işlem için özellikle RFC 2295’te tanımlanan mekanizmanın + kullanılmasını isterse şeffaf içerik uzlaşımı + kullanılır. Bu uzlaşım yöntemi, en uygun gösterimin seçilmesi + konusunda tarayıcıya tam denetim imkanı verir; dolayısıyla sonuç + tarayıcının bu işlem için kullandığı algoritmanın başarısına bağlıdır. + Şeffaf uzlaşım sürecinin bir parçası olarak, tarayıcı, RFC 2296’da + tanımlanan ‘gösterim çeşidini uzaktan seçme algoritması’nın + çalıştırılmasını Apache’den isteyebilir.
  4. +
+ +
Uzlaşımın Boyutları + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BoyutAçı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.
DilTarayı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.
KodlamaTarayıcı kodlama tercihlerini Accept-Encoding başlık + alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı + olabilir.
Karakter KümesiTarayı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 Uzlaşım Algoritması + +

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:

+ +
    +
  1. Önce her uzlaşım boyutu için ilgili Accept* başlık alanına + bakılıp her gösterim çeşidine bir üstünlük katsayısı atanır. Eğer + boyutlardan bazıları için ilgili Accept* başlığı + uygulanabilir değilse bu boyut elenir ve sonuçta hiçbir gösterim + çeşidi kalmasza 4. adıma atlanır.
  2. + +
  3. ‘En uygun’ gösterim çeşidi bir eleme süreciyle seçilir. Bu süreç + sırasında aşağıdaki sınamalar sırayla uygulanır. Sınamalardan + geçemeyen bir gösterim çeşidi elenir. Sınamaların bir aşamasında tek + bir gösterim çeşidi kalırsa bu en uygun eşleşme olarak seçilmiş olur + ve 3. adıma atlanır. Eğer birden fazla gösterim çeşidi kalırsa sonraki + sınamaya geçilir. + +
      +
    1. 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.
    2. + +
    3. En yüksek dil üstünlük katsayısına sahip gösterim çeşidi seçilir. +
    4. + +
    5. En uygun dil eşleşmesine sahip gösterim çeşidini seçmek için + önce varsa 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.
    6. + +
    7. En yüksek ‘seviyeden’ ortam parametresine (text/html ortam türü + sürümünü belirtmekte kullanılır) sahip gösterim çeşitleri + seçilir.
    8. + +
    9. 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.
    10. + +
    11. ISO-8859-1 karakter kümesi ile ilişkilendirilmemiş gösterim + çeşitleri seçilir. Böyle hiçbir gösterim yoksa bütün gösterimler + seçilir.
    12. + +
    13. En uygun kodlamaya sahip gösterim çeşitleri seçilir. Tarayıcı + tarafından kabul edilebilir kodlamaya sahip gösterim çeşitleri + varsa bunlar seçilir. Yoksa kodlanmış ve kodlanmamış gösterim + çeşitleri karışık olarak mevcutsa sadece kodlanmamış olanlar + seçilir. Eğer bütün gösterim çeşitlerinin sadece kodlanmış ya da + sadece kodlanmamış gösterimleri mevcutsa hepsi seçilir.
    14. + +
    15. En küçük içerik uzunluğuna sahip gösterim çeşitleri seçilir.
    16. + +
    17. Kalan gösterim çeşitlerinin ilki seçilir. Bu ilk, ya türeşlem + dosyasında listelenen ilk çeşittir ya da gösterimler bir dizinden + okunuyorsa ASCII kod sıralamasına göre ilk sıradaki dosya ismine + sahip gösterimdir.
    18. +
    +
  4. + +
  5. Algoritma, artık seçilmiş en uygun gösterim çeşidine sahipse bu + artık yanıt olarak döndürülebilir. HTTP yanıt başlığı + Vary’ye uzlaşım boyutları atanır (tarayıcı ve + arabellekler özkaynağı kaydederken bu bilgiyi kullanırlar) + ve algoritma sonlandırılır.
  6. + +
  7. Buraya gelinmişse hiçbir gösterim seçilmemiş demektir (hiçbiri + tarayıcı tarafından kabul edilebilir bulunmadığından dolayı). + Gövdesinde mevcut gösterim çeşitlerini listeleyen bir HTML belgesi 406 + durum koduyla döndürülür (406: ‘kabul edilebilir bir gösterim yok’). + Ayrıca HTTP Vary başlığında gösterim çeşitliliğinin + boyutları belirtilir.
  8. +
+
+
+ +
Üstünlük Değerleriyle Oynamak + +

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.

+ +
Ortam Türleri ve Dosyaismi Kalıpları + +

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.

+
+ +
Dil Uzlaşımında İstisnalar + +

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.

+ + Örnek + SetEnvIf Cookie "language=(.+)" prefer-language=$1
+ Header append Vary cookie +
+
+
+ +
+ Şeffaf İçerik Uzlaşımının Genişletilmesi + +

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.

+
+ +
Hiperbağlar ve İsimlendirme Uzlaşımları + +

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:

+ +
    +
  • misal.en.html
  • + +
  • misal.html.en
  • + +
  • misal.en.html.gz
  • +
+ +

Hiperbağ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dosya ismiGeçerli HiperbağGeçersiz Hiperbağ
misal.html.enmisal
+ misal.html
-
misal.en.htmlmisalmisal.html
misal.html.en.gzmisal
+ misal.html
misal.gz
+ misal.html.gz
misal.en.html.gzmisalmisal.html
+ misal.html.gz
+ misal.gz
misal.gz.html.enmisal
+ misal.gz
+ misal.gz.html
misal.html
misal.html.gz.enmisal
+ 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).

+
+ +
Arabellekler Hakkında + +

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.

+ +
+
diff --git a/docs/manual/filter.xml.tr b/docs/manual/filter.xml.tr new file mode 100644 index 0000000000..b85483ea07 --- /dev/null +++ b/docs/manual/filter.xml.tr @@ -0,0 +1,163 @@ + + + + + + + + + + + Süzgeçler + + +

Bu belge, Apache’de süzgeç kullanımı hakkındadır.

+
+ +
Apache 2’de Süzme İşlemi + + + mod_filter + mod_deflate + mod_ext_filter + mod_include + mod_charset_lite + + + FilterChain + FilterDeclare + FilterProtocol + FilterProvider + AddInputFilter + AddOutputFilter + RemoveInputFilter + RemoveOutputFilter + ExtFilterDefine + ExtFilterOptions + SetInputFilter + SetOutputFilter + + + +

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.

+ +

+ Süzgeçler, İstek işleme eksenine dik bir veri eksenine peş peşe
+ yerleştirilebilir. +

+ +

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

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

+ Farklı süzgeç üreticilerinin uygulamaları istek işlemenin durumuna
+ bağlı olarak akıllıca uygulanabilir. +

+ +

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ç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 sorun çıkarabilmesi sebebiyle kullanımı artık + önerilmemektedir. Onun yerine devingen yapılandırma kullanınız.

+ +
+
diff --git a/docs/manual/handler.xml.tr b/docs/manual/handler.xml.tr new file mode 100644 index 0000000000..74c9d7cf1f --- /dev/null +++ b/docs/manual/handler.xml.tr @@ -0,0 +1,159 @@ + + + + + + + + + + + Apache Eylemcilerinin Kullanımı + + +

Bu belgede Apache Eylemcilerinin kullanımı açıklanmıştır.

+
+ +
+ Eylemci Nedir? + + + mod_actions + mod_asis + mod_cgi + mod_imagemap + mod_info + mod_mime + mod_negotiation + mod_status + + + Action + AddHandler + RemoveHandler + SetHandler + + + + +

Bir eylemci bir dosya çağrıldığında uygulanacak eylemin Apache + dahilindeki gösterimidir. Genellikle dosyaların kendi türüne bağlı + olarak örtük eylemcileri vardır. Normalde tüm dosyalar basitçe sunucu + tarafından sunulurlar, fakat bazı dosya türleri normalden farklı şekilde + ele alınırlar.

+ +

Eylemciler, dosya türünden bağımsız olarak dosyanın bulunduğu yere veya + dosya ismi uzantısına göre de yapılandırılabilirler. Gerek, zarif bir + çözüm oluşuyla gerekse, hem dosya türünü hem de bir dosya ile ilişkili + bir eylemciyi mümkün kılması sebebiyle bunun getirisi daha yüksektir. + (Ayrıca, çok uzantılı + dosyalara da bakınız.)

+ +

Eylemciler sunucu içinde derlenebileceği gibi bir modül olarak ya da + Action yönergesi ile de + sunucuya dahil edilebilirler. Standart dağıtımda bulunan yerleşik + eylemciler şunlardır:

+ +
    +
  • default-handler: Dosyayı, öntanımlı olarak durağan + içeriği işlemekte kullanılan default_handler() işlevini + kullanarak gönderir. (core)
  • + +
  • send-as-is: Dosyayı HTTP başlıklarıyla olduğu gibi + gönderir. (mod_asis)
  • + +
  • cgi-script: Dosyayı bir CGI betiği olarak ele alır. + (mod_cgi)
  • + +
  • imap-file: Dosyayı bir resim eşleme kuralları + dosyası olarak çözümler. (mod_imagemap)
  • + +
  • server-info: Sunucunun yapılandırma bilgisini + döndürür. (mod_info)
  • + +
  • server-status: Sunucunun durum raporunu döndürür. + (mod_status)
  • + +
  • type-map: Dosyayı içerik uzlaşımı için bir tür + eşlem dosyası olarak çözümler. (mod_negotiation)
  • +
+
+ +
+ Örnekler + +
+ Bir CGI betiği kullanarak durağan içeriğin değiştirilmesi + +

Aşağıdaki yönergeler sayesinde, html uzantılı dosyalar + için yapılan istekler footer.pl CGI betiğininin + çalıştırılmasına sebep olacaktır.

+ + + Action add-footer /cgi-bin/footer.pl
+ AddHandler add-footer .html +
+ +

Bu yapılandırmayla, istenen belgenin özgün haliyle mi (yeri + PATH_TRANSLATED ortam değişkenindedir) yoksa istenen + değişiklikler veya eklemeler yapıldıktan sonra mı gönderileceğinden + CGI betiği sorumlu olacaktır.

+ +
+
+ HTTP başlıklı dosyalar + +

Aşağıdaki yönergeler kendi HTTP başlıklarını içeren dosyalar için + kullanılan send-as-is eylemcisini etkinleştirmek amacıyla + kullanılmıştır. /siteler/htdocs/asis/ dizinindeki tüm + dosyalar dosya ismi uzantılarına bakılmaksızın send-as-is + eylemcisi tarafından işleme sokulacaktır.

+ + + <Directory /siteler/htdocs/asis>
+ SetHandler send-as-is + </Directory> +
+ +
+
+
+ Yazılım Geliştirenler İçin + +

Eylemci özellikleri gerçeklenirken kullanılmak üzere Apache API’ye bir ekleme yapılmıştır. + Özellikle de, request_rec yapısına yeni bir kayıt + eklenmiştir:

+ + + char *handler + + +

Modülünüzün bir eylemciyi devreye sokmasını isterseniz, tek yapacağınız + isteğin invoke_handler aşamasının hemen öncesinde + r->handler alanına eylemcinin ismini atamak olacaktır. + Eylemciler daha önce de bahsedildiği gibi bir içerik türü yerine bir + eylemci ismi kullanılarak gerçeklenirler. Çok gerekli olmamakla + birlikte, eylemciler için kullanılan adlandırma uzlaşımları gereğince, + ismi oluşturan sözcükler, ortam türü isim alanını ihlal etmemek amacıyla + bölü imleri ile değil tire imleri ile ayrılırlar.

+
+
diff --git a/docs/manual/images/caching_fig1.tr.png b/docs/manual/images/caching_fig1.tr.png new file mode 100644 index 0000000000..0ccf94e99f Binary files /dev/null and b/docs/manual/images/caching_fig1.tr.png differ diff --git a/docs/manual/images/filter_arch.tr.png b/docs/manual/images/filter_arch.tr.png new file mode 100644 index 0000000000..9696fccbb9 Binary files /dev/null and b/docs/manual/images/filter_arch.tr.png differ diff --git a/docs/manual/images/mod_filter_new.tr.png b/docs/manual/images/mod_filter_new.tr.png new file mode 100644 index 0000000000..8ec1371a33 Binary files /dev/null and b/docs/manual/images/mod_filter_new.tr.png differ diff --git a/docs/manual/mod/mod_alias.xml.tr b/docs/manual/mod/mod_alias.xml.tr new file mode 100644 index 0000000000..5031b80b97 --- /dev/null +++ b/docs/manual/mod/mod_alias.xml.tr @@ -0,0 +1,429 @@ + + + + + + + + + + +mod_alias +Belge ağacının parçalarının dosya sisteminin parçalarıyla +eşlenmesini sağlar ve URL yönlendirmesi yapar. +Base +mod_alias.c +alias_module + + +

Bu modülde bulunan yönergeler sunucuya istek olarak gelen URL’lerin + denetlenmesini ve değiştirilmesini mümkün kılar. Alias ve ScriptAlias yönergeleri URL’lerin dosya sisteminin + dizinlerine eşlenmesini sağlar. Böylece, kök dizini DocumentRoot ile belirtilen site belge ağacı + altında bulunmayan içeriğe erişmek mümkün olur. ScriptAlias yönergesi buna ek olarak + hedef dizini sadece CGI betiklerini içeren dizin olarak imler.

+ +

Redirect yönergesi, + farklı bir URL ile yeni bir istek yapmaları için istemcileri + yönlendirmekte kullanılır. Çoğunlukla özkaynak başka bir yere + taşındığında kullanılır.

+ +

mod_alias modülü basit URL değiştirme görevlerini + yerine getirmek için tasarlanmıştır. Sorgu dizgelerini işleme sokmak + gibi daha karmaşık görevler için mod_rewrite modülü ile + sağlanan araçlar kullanılır.

+ +
+ + mod_rewrite URL’lerin Dosya sistemi ile Eşlenmesi + + +
İşlem Sırası + +

Farklı bağlamlarda bulunan Alias ve Redirect + yönergeleri standart katıştırma + kuralları ile ilgili diğer yönergeler gibi işleme sokulur. Fakat + aynı bağlam dahilinde (örneğin, aynı VirtualHost bölümünde) çok fazla Alias ve Redirect varsa bunlar belli bir + sıraya göre işleme sokulurlar.

+ +

İlk adımda, Alias’lardan önce + bütün Redirect yönergeleri + işleme sokulur. Bu bakımdan bir Redirect veya RedirectMatch ile eşleşen bir istek için + hiçbir Alias + uygulanmayacaktır. İkinci adımda yapılandırma dosyasında yer aldıkları + sıraya göre Redirect ve + Alias yönergeleri işleme + sokulurlar, dolayısıyla ilk eşleşme öncelikli olmuş olur.

+ +

İlk eşleşmenin öncelikli olması sebebiyle, bu yönergelerin birden + fazlası aynı alt yola uygulandığı takdirde, tüm yönergelerin etkili + olabilmesi için en uzun yolu sıralamada en öne almalısınız. Örneğin + aşağıdaki yapılandırma beklendiği gibi çalışacaktır:

+ + + Alias /foo/bar /baz
+ Alias /foo /gaz +
+ +

Ama yukarıdaki iki satır ters sırada yerleştirilmiş olsaydı, + /foo rumuzu daima /foo/bar rumuzundan önce + eşleşecek, dolayısıyla ikinci yönerge yok sayılacaktı.

+ +
+ + +Alias +URL’leri dosya sistemi konumlarıyla eşler. +Alias URL-yolu +dosya-yolu|dizin-yolu +server configvirtual host + + + + +

Alias yönergesi, belgelerin DocumentRoot dizininden farklı bir yerde + saklanmasını mümkün kılar. URL-yolu ile başlayan + URL’ler (% imlemesi çözüldükten sonra) dizin-yolu + ile başlayan yerel dosyalarla eşlenir. URL-yolu, + harf büyüklüğüne duyarsız sistemlerde bile harf büyüklüğüne + duyarlıdır.

+ + Örnek: + Alias /image /ftp/pub/image + + +

http://sunucum/image/foo.gif şeklinde bir istek, sunucunun + /ftp/pub/image/foo.gif dosyasıyla yanıt vermesine sebep + olurdu. Sadece tam yol parçaları eşleştirilir; bu bakımdan yukarıdaki + Alias yapılandırması + http://sunucum/imagefoo.gif ile eşleşmez. Düzenli + ifadelerin kullanıldığı daha karmaşık eşleşmeler için AliasMatch yönergesine bakınız.

+ +

URL-yolu’nu bir / ile + sonlandırırsanız Alias yönergesini yorumlarken + sunucunun da sona bir / ekleyeceğine dikkat ediniz. Yani, + eğer Alias /icons/ /usr/local/apache/icons/ diye bir + tanım yaparsanız /icons URL’si için bir + Alias kullanılmayacaktır.

+ +

Alias hedefleri için ek Directory bölümleri + belirtmeniz gerekebileceğine dikkat ediniz. Directory bölümlerinden önce yer alan + Alias yönergelerine özellikle bakılır, + dolayısıyla sadece Alias hedefleri etkilenir. + (Bununla birlikte, Alias yönergelerinden önce + işleme sokulan Location bölümlerinin uygulanacağına dikkat + ediniz.)

+ +

Özellikle, DocumentRoot dışında + bir dizine bir Alias oluşturuyorsanız hedef + dizine doğrudan erişim izni vermeniz gerekebilir.

+ + Örnek: + Alias /image /ftp/pub/image
+ <Directory /ftp/pub/image>
+ + Order allow,deny
+ Allow from all
+
+ </Directory> +
+
+
+ + +AliasMatch +URL’leri dosya sistemi konumlarıyla düzenli ifadeleri kullanarak +eşler. +AliasMatch düzenli-ifade +dosya-yolu|dizin-yolu +server configvirtual host + + + +

Bu yönerge URL-yolu ile eşleşmek üzere bir + düzenli ifade kabul etmesi dışında + Alias yönergesine eşdeğerdir. + Belirtilen düzenli ifade URL-yolu ile eşleşiyorsa + sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak dosya yolunu + elde eder. Örneğin, /icons dizinini etkinleştirmek için şu + yazılabilir:

+ + + AliasMatch ^/icons(.*) /usr/local/apache/icons$1 + + +

Ayrıca, URL-yolu ile harf büyüklüğüne duyarsız + eşleşmeler sağlayacak düzenli ifadeler de kullanılabilir:

+ + + AliasMatch (?i)^/image(.*) /ftp/pub/image$1 + +
+
+ + +Redirect +İstemciyi, bir yönlendirme isteği döndürerek farklı bir URL’ye +yönlendirir. +Redirect [durum] URL-yolu +URL +server configvirtual host +directory.htaccess +FileInfo + + +

Redirect yönergesi istemciye bir yönlendirme + isteği döndürerek eski URL’yi yenisiyle eşler.

+ +

Eski URL-yolu bir bölü çizgisi ile başlar ve harf + büyüklüğüne duyarlıdır (% imlemesi çözüldükten sonra). + URL-yolu olarak göreli yollara izin verilmez. + URL ise ya bir şema ve konak ismi ile başlayan bir + mutlak URL ya da bir bölü çizgisi ile başlayan bir URL yolu olmalıdır. + İkinci durumda URL yolunun başına geçerli sunucu ismi ve şemayı sunucu + ekler.

+ +

URL-yolu ile başlayan istekler istemciye hedef + URL konumuna bir yönlendirme isteği olarak + dönecektir. URL-yolu’nun devamı niteliğindeki ek + yol hedef URL’ye eklenir.

+ + Örnek: + Redirect /hizmet http://iki.mesela.dom/hizmet + + +

İstemcinin yaptığı http://mesela.dom/hizmet/fesmekan.txt + isteğine karşılık istemciye isteği + http://iki.mesela.dom/hizmet/fesmekan.txt olarak yapması + söylenecektir. Sadece tam yol parçaları eşleştirilir, bu nedenle + http://mesela.dom/hizmetfesmekan.txt isteği yukarıdaki + yönlendirme ile eşleşmeyecektir. Düzenli ifadelerin kullanıldığı daha + karmaşık eşleşmeler için RedirectMatch yönergesine bakınız.

+ + + Bilginize +

Yapılandırma dosyasında yer alış sırasına bakmaksızın + Redirect yönergeleri + Alias ve ScriptAlias + yönergelerinden önce ele alınır.

+ +

Herhangi bir durum belirtilmemişse "geçici" + yönlendirme (HTTP durum kodu: 302) yapılır. Bu, istemciye özkaynağın + geçici olarak başka yere taşındığını belirtir. Diğer HTTP durum + kodlarını döndürmek için kullanılabilecek durum + değerleri:

+ +
+
permanent
+
İstemciye özkaynağın kalıcı olarak taşındığını belirten kalıcı + yönlendirme durumu (301) döndürülür.
+ +
temp
+
İstemciye geçici yönlendirme durumu (302) döner. Bu öntanımlıdır. +
+ +
seeother
+
İstemciye özkaynağın yerine başka bir şey konduğunu belirten + "diğerine bak" durumu (303) döndürülür.
+ +
gone
+
İstemciye özkaynağın kalıcı olarak kaldırıldığını belirten "ölü + bağlantı" durumu (410) döner. Bu durumda URL + belirtilmez.
+
+ +

Diğer durum kodları için durum olarak sayısal + durum kodu belirtilir. Eğer durum 300 ile 399 arasındaysa bir + URL belirtmek gereklidir, yoksa belirtilmez. + Belirtilecek durum kodunu Apache’nin bilmesi gerektiğine dikkat ediniz + (http_protocol.c dosyasında bulunan + send_error_response işlevine bakınız).

+ + Örnek: + Redirect permanent /bir http://mesela.dom/iki
+ Redirect 303 /yedi http://mesela.dom/baskabisey +
+
+
+ + +RedirectMatch +Geçerli URL ile eşleşen bir düzenli ifadeye dayanarak bir harici +yönlendirme gönderir. +RedirectMatch [durum] düzenli-ifade +URL +server configvirtual host +directory.htaccess +FileInfo + + +

Bu yönerge URL-yolu ile eşleşmek üzere bir + düzenli ifade kabul etmesi dışında + Redirect yönergesine + eşdeğerdir. Belirtilen düzenli ifade URL-yolu ile + eşleşiyorsa sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak + dosya yolunu elde eder. Örneğin, tüm GIF dosyası isteklerini başka bir + sunucudaki aynı isimli JPEG dosyalarına yönlendirmek için şu + yazılabilir:

+ + + RedirectMatch (.*)\.gif$ http://baska.sunucu.dom$1.jpg + +
+
+ + +RedirectTemp +İstemciyi, geçici bir yönlendirme isteği döndürerek farklı bir +URL’ye yönlendirir. +RedirectTemp URL-yolu URL +server configvirtual host +directory.htaccess +FileInfo + + +

Bu yönerge istemciye daima geçici yönlendirme durumu (302) döndürür. + Yani, Redirect temp ile aynı işi yapar.

+
+
+ + +RedirectPermanent +İstemciyi, kalıcı bir yönlendirme isteği döndürerek farklı bir +URL’ye yönlendirir. +RedirectPermanent URL-yolu URL +server configvirtual host +directory.htaccess +FileInfo + + +

Bu yönerge istemciye daima kalıcı yönlendirme durumu (301) döndürür. + Yani, Redirect permanent ile aynı işi yapar.

+
+
+ + +ScriptAlias +Bir URL’yi dosya sistemindeki bir yere eşler ve hedefi bir CGI betiği olarak çalıştırır. +ScriptAlias URL-yolu +dosya-yolu|dizin-yolu +server configvirtual host + + + +

Hedef dizini, mod_cgi modülünün CGI betiği + yorumlayıcısı tarafından çalıştırılacak betikleri içeren dizin olarak + imlemesi dışında Alias + yönergesinin yaptığı işi yapar. URL-yolu ile + başlayan harf büyüklüğüne duyarlı URL’ler (% imlemesi çözüldükten + sonra), dosya sistemindeki bir tam yol olarak belirtilmiş + dizin-yolu ile başlayan betiklerle eşlenir.

+ + Örnek: + ScriptAlias /cgi-bin/ /siteler/cgi-bin/ + + +

http://sunucum/cgi-bin/foo şeklindeki bir istek sunucunun + /siteler/cgi-bin/foo betiğini çalıştırmasına sebep olur. Bu + yapılandırma aslında şuna eşdeğerdir:

+ + + Alias /cgi-bin/ /siteler/cgi-bin/
+ <Location /cgi-bin >
+ + SetHandler cgi-script
+ Options +ExecCGI
+
+ </Location> +
+ + Yapılandırma değiştiğinde kaynak kodlarının ister + istemez açığa çıkmasını istemiyorsanız CGI betiklerinizi DocumentRoot altına koymayınız. + ScriptAlias yönergesi URL’yi doğru yere + eşlemekten başka orayı bir CGI betikleri dizini olarak imler. CGI + betiklerinizi DocumentRoot altına + koyarsanız çalıştırmak için ScriptAlias değil, + Directory, + SetHandler ve Options yönergelerini örnekteki gibi kullanın: + + + <Directory /usr/local/apache2/htdocs/cgi-bin >
+ + SetHandler cgi-script
+ Options ExecCGI
+
+ </Directory> +
+ + Aynı dosya sistemi konumu ile çok sayıda URL-yolu + eşleşebileceğinden, bir Directory + bölümü ile sınırlanmadığı takdirde CGI betiklerinin kaynak kodları açığa + çıkabilir; bu bakımdan ScriptAlias yönergesini yok + sayan URL yollarının belirtilebilme olasılığı gözardı + edilmemelidir.
+ +
+ CGI Öğreticisi +
+ + +ScriptAliasMatch +Bir URL’yi dosya sistemindeki bir yere düzenli ifade kullanarak +eşler ve hedefi bir CGI betiği olarak çalıştırır. +ScriptAliasMatch düzenli-ifade +dosya-yolu|dizin-yolu +server configvirtual host + + + +

Bu yönerge URL-yolu ile eşleşmek üzere bir + düzenli ifade kabul etmesi dışında + ScriptAlias yönergesine + eşdeğerdir. Belirtilen düzenli ifade URL-yolu ile + eşleşiyorsa sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak + dosya yolunu elde eder. Örneğin, standart /cgi-bin dizinini + etkin kılmak için şu yazılabilir:

+ + + ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1 + +
+
+ +
diff --git a/docs/manual/mod/mod_dir.xml.tr b/docs/manual/mod/mod_dir.xml.tr new file mode 100644 index 0000000000..02d3af08a7 --- /dev/null +++ b/docs/manual/mod/mod_dir.xml.tr @@ -0,0 +1,157 @@ + + + + + + + + + +mod_dir +Bölü çizgisiyle biten yönlendirmeleri yapar ve dizin içeriği dosyalarını sunar. +Base +mod_dir.c +dir_module + + +

Bir dizin içerik dosyası şu iki kaynaktan birinden gelebilir:

+ +
    +
  • Kullanıcı tarafından yazılmış ve ismi genellikle + index.html olan bir dosya. Dosya ismi DirectoryIndex yönergesi ile belirlenir. + Bu, mod_dir modülü tarafından denetlenir.
  • + +
  • Aksi takdirde içerik listesi sunucu tarafından üretilir. Bu, + mod_autoindex modülü tarafından sağlanır.
  • +
+

Bu iki işlev tamamen birbirinden ayrıdır, dolayısıyla eğer isterseniz + kendiliğinden dizin içerik listesi üretimini tamamen iptal + edebilirsiniz.

+ +

Sunucu http://sunucum/filanca/birdizin şeklinde bir istek + aldığında birdizin bir dizinin ismiyse ‘bölü çizgisiyle + biten’ bir yönlendirme söz konusudur. Dizinler URL sonuna bir bölü + çizgisi eklenmesini gerektirir, bu bakımdan mod_dir + modülü isteği http://sunucum/filanca/birdizin/ şeklinde + yönlendirir.

+
+ + +DirectoryIndex +İstemci bir dizin istediğinde dizin içeriğini listeler. + +DirectoryIndex + yerel-url [yerel-url] ... +DirectoryIndex index.html +server configvirtual host +directory.htaccess +Indexes + + +

DirectoryIndex yönergesi, istemci, dizinin + sonuna bir bölü çizgisi ekleyerek dizin içeriğinin listelenmesini + istediğinde bakılmak üzere özkaynakları listeler. + yerel-url, sunucu üstünde istenen dizine göreli + bir belgenin URL’sidir; normal olarak dizin içindeki bir dosyanın + ismidir. Çeşitli URL’ler verilebilirse de sunucu daima ilk bulduğuyla + dönecektir. Eğer özkaynakların hiçbiri yoksa ve Indexes + seçeneği atanmışsa sunucu dizin içeriğinden bir liste üretecektir.

+ + Örnek: + DirectoryIndex index.html + + +

Bu yapılandırmadan sonra yapılan bir + http://sunucum/belgeler/ isteğine karşılık, sunucu, + mevcutsa http://sunucum/belgeler/index.html dosyasını + döndürecek, değilse ürettiği dizin içerik listesini gönderecektir.

+ +

Belgelerin dizine göreli olmasının gerekmediğine dikkat ediniz.

+ + + DirectoryIndex index.html index.txt /cgi-bin/index.pl + + +

Bu örnekte ise dizin içinde ne index.html ne de + index.txt mevcut olduğunda /cgi-bin/index.pl + CGI betiği çalıştırılacaktır.

+
+
+ + +DirectorySlash +Bölü çizgisi ile biten yönlendirmeleri açar/kapar. +DirectorySlash On|Off +DirectorySlash On +server configvirtual host +directory.htaccess +Indexes +Apache 2.0.51 ve sonrasında mevcuttur. + + +

DirectorySlash yönergesi, bir dizin isteğinde + bulunan URL’lerin sonuna mod_dir modülü tarafından bir + bölü çizgisi eklenip eklenmeyeceğini belirler.

+ +

Normalde, bir kullanıcı sona bir bölü çizgisi eklemeden bir dizin için + istekte bulunursa mod_dir zaten onu aynı özkaynağa + yönlendirir, fakat isteğin sonuna bir bölü çizgisi eklenmesinin bazı iyi + sebepleri vardır:

+ +
    +
  • Kullanıcı bunun sonucunda meşru bir URL ile istekte bulunmuş olur.
  • +
  • mod_autoindex gerektiği gibi çalışır. Yoksa + bağlantıdaki yolu sunamayacağından yanlış yolu gösterirdi.
  • +
  • DirectoryIndex yönergesi + sadece bölü çizgisi ile biten dizin istekleri için değerlendirilir.
  • +
  • HTML sayfa içindeki göreli URL başvuruları gerektiği gibi + çalışacaktır.
  • +
+ +

Siz yine de bu etkiyi istemezseniz ve yukarıdaki sebepler de size uygun + değilse yönlendirmeyi şöyle kapatabilirsiniz:

+ + + # Aşağıdaki güvenlik uyarısına bakınız!
+ <Location /bir/yol>
+ + DirectorySlash Off
+ SetHandler bir-eylemci
+
+ </Location> +
+ + Güvenlik Uyarı +

Bölü çizgisi ile biten yönlendirmelerin kapatılması bir bilginin + istemeyek açığa çıkmasına sebep olabilir. mod_autoindex + modülünün etkin olduğunu (Options +Indexes) ve DirectoryIndex ile geçerli bir özkaynağın + (index.html olsun) atandığını ama bu URL için başka hiçbir + özel eylemci tanımlanmadığını varsayalım. Bu durumda bölü çizgisi ile + biten bir istek olduğunda index.html dosyası sunulurdu. + Fakat bölü çizgisi ile bitmeyen bir istek dizin içeriğinin + listelenmesi ile sonuçlanırdı.

+
+
+
+ +