Bu yönerge protokol türüne göre bir dinleme soketinin işletim
+ sistemine özgü en iyilemelerini etkin kılar. İşletim sistemi çekirdeği
+ için temel önerme veri alınıncaya kadar veya HTTP isteğinin tamamı
+ tamponlanana kadar sunucu sürecine bir soket tahsis etmemektir.
+ Şimdilik sadece FreeBSD’nin Kabul Süzgeçleri ve Linux’un soket seçeneklerinden
+ TCP_DEFER_ACCEPT desteklenmektedir.
FreeBSD için öntanımlı değerler:
+httpready kabul süzgeci HTTP isteklerinin tamamını
+ işletim sistemi çekirdeği seviyesinde tamponlar. Çekirdek isteğin
+ tamamını alır almaz sunucuya gönderir. Ayrıntılar için accf_http(9) kılavuz sayfasına bakınız. HTTPS istekleri şifrelenmiş
+ olduğundan sadece accf_data(9) süzgeci kullanılır.
Linux’taki ön tanımlı değerler:
+Linux’un TCP_DEFER_ACCEPT soket seçeneği HTTP isteklerinin
+ tamponlanmasını desteklemez. none dahil her değer
+ dinleyici üzerinde TCP_DEFER_ACCEPT seçeneğini etkin kılar.
+ Daha ayrıntılı bilgi edinmek için Linux
+ tcp(7) kılavuz sayfasına bakınız.
Argüman olarak none kullanımı o protokol için kabul
+ süzgeçlerini iptal edecektir. Bu, nntp gibi, sunucunun
+ baştan bir veri göndermesinin gerekli olduğu protokoller için
+ kullanışlıdır:
Bu yönerge, istekte dosya isminden sonra (dizinde belirtilen dosya
+ bulunmayabilir) belirtilen yol verisinin kabul edilip edilmeyeceğini
+ denetler. Dosya isminden sonra belirtilen yol verisi
+ PATH_INFO ortam değişkeninde betiklerin kullanımına
+ sunulabilir.
Örneğin, içinde sadece here.html dosyası bulunan bir
+ /test/ dizinimiz olsun. /test/here.html/more
+ ve /test/nothere.html/more isteklerinin her ikisi de
+ PATH_INFO değişkenine /more verisinin
+ atanmasını sağlar.
Off/test/here.html/more şeklindeki istekler bir 404 (Nesne
+ bulunamadı) hatasıyla sonuçlanır.On/test/here.html/more şeklindeki
+ istekler, /test/here.html geçerli bir dosya olduğu
+ takdirde kabul edilir.DefaultPATH_INFO
+ isteklerini reddeder. cgi-script ve isapi-handler gibi betiklere
+ hizmet eden eylemciler ise genellikle PATH_INFO
+ isteklerini öntanımlı olarak kabul ederler.AcceptPathInfo yönergesinin birincil amacı eylemcinin
+ PATH_INFO istekleri hakkında verdiği kabul veya red
+ kararını geçersiz kılabilmenizi sağlamaktır. Örneğin,
+ PATH_INFO’ya dayalı olarak içerik üretmek için INCLUDES gibi bir süzgeç kullandığınız takdirde bu
+ geçersizleştirme zorunlu olur. Normal dosyalar için çekirdek eylemci
+ normal olarak isteği reddederdi, böyle bir durumda bir betiği etkin
+ kılmak için aşağıdaki gibi bir yapılandırma kullanabilirsiniz:
Belge yolu üzerindeki dizinlerde dağıtık yapılandırma dosyalarının bulunmasına izin verilmişse sunucu bir isteği + işlerken önce bu dizinlerde bu yönergede belirtilmiş yapılandırma + dosyasını arar. Örnek:
+ +Sunucu, /usr/local/web/index.html belgesini döndürmeden
+ önce,
şeklinde bir yapılandırma ile iptal edilmiş olmadıkça yönergeler için
+ /.acl, /usr/.acl,
+ /usr/local/.acl ve /usr/local/web/.acl
+ dosyalarını okur.
text/plain veya
+ text/html olduğunda eklenecek öntanımlı karakter kümesi
+ parametresini belirler.Bu yönerge, yanıtın içerik türü text/plain veya
+ text/html olmak şartıyla yanıta eklenecek karakter
+ kümesini (karakter kodlamasınının ismini) belirler. Bu, asıl davranış
+ çoğunlukla kullanıcının istemci yapılandırmasına bağlı olmakla
+ birlikte, yanıtın gövdesinde META elemanı vasıtasıyla
+ belirtilmiş karakter kümesini geçersiz kılar. AddDefaultCharset
+ Off şeklinde bir atama bu işlevselliği iptal eder.
+ AddDefaultCharset On ile bu işlevsellik etkin kılınmaktan
+ başka iso-8859-1 karakter kümesini öntanımlı olarak yanıta
+ eklenir. Yönergede karküm olarak belirtilecek değerler, MIME
+ ortam türlerinde kullanmak üzere IANA’da kayıtlı
+ karakter kümesi değerlerinden biri olmalıdır. Örnek:
Bu yönerge yanıtın
Aşağıdaki örnekte DEFLATE süzgeci kullanılmıştır. Bu süzgeç,
+ text/html veya text/plain olarak yaftalanmış
+ tüm çıktıyı (ister durağan ister devingen olsun) istemciye göndermeden
+ önce sıkıştırır.
İçeriğin birden fazla süzgeç tarafından işlenmesini isterseniz süzgeç
+ isimlerini noktalı virgüllerle ayırarak belirtebilirsiniz. Ayrıca, bu
+ süzgeçlerin her biri için ayrı bir
+
Aşağıdaki yapılandırma text/html olarak yaftalanmış tüm
+ betik çıktılarının önce INCLUDES sonra da
+ DEFLATE süzgecinden geçirilmesine sebep olur.
Süzgeçlerin
Bununla birlikte, süzgeçlerin uygulanacağına emin olmak isterseniz,
+ bir kaynağa içerik türünü örneğin,
/ yerine
+ %2F ve ek olarak \ için ilgili sistemlerde
+ %5C kullanılmış URL’ler). Normalde böyle URL’ler bir 404
+ (Nesne bulunamadı) hatasıyla reddedilirler.
On, çoğunlukla
+ PATH_INFO ile bir arada kullanıldığı zaman
+ kullanışlıdır.
Kodlanmış bölü çizgilerine izin vermek bu kodlamanın karakter olarak
+ çözümleneceği anlamına gelmez. URL içindeki %2F veya
+ %5C’ler (sadece ilgili sistemlerde), tıpkı normal
+ URL’lere yapıldığı gibi, oldukları gibi bırakılırlar.
.htaccess dosyalarında bulunmasına izin verilen
+ yönerge türleri belirtilir.Sunucu .htaccess dosyasına rastlarsa
+ önceki yapılandırma yönergelerinin hangilerinin geçersiz kılınmak üzere
+ bildirildiğini bilmek ister.
Yönergeye değer olarak None belirtilirse .htaccess dosyaları tamamen yok sayılır. Bu
+ durumda, sunucu dosya sisteminde rastladığı .htaccess
+ dosyalarını okumaya dahi çalışmayacaktır.
Bu yönergeye All değeri atanırsa, .htaccess bağlamında kullanılabilecek her
+ yönergeye .htaccess dosyalarında izin verilir.
yönerge-türü olarak aşağıdaki yönerge grup
+ isimlerinden biri belirtilebilir:
Add* ve Remove* yönergeleri,
+ Örnek:
+ +Bu örnekte AuthConfig ve Indexes grubundaki
+ yönergeler bir dahili sunucu hatasına yol açmayacaktır.
Bu yönerge Apache’inin CGI bekitlerini çalıştırmak için kullanacağı
+ yorumlayıcıyı nasıl bulacağını denetlemek için kullanılır. Örneğin,
+ CGIMapExtension sys:\foo.nlm .foo satırı .foo
+ uzantılı CGI betik dosyalarının FOO yorumlayıcıya aktarılmasını
+ sağlar.
Content-MD5 HTTP yanıt başlıklarının üretimini
+ etkin kılar.Bu yönerge RFC2616 ve RFC1864’te tanımlandığı gibi
+ Content-MD5 üretimini etkin kılar.
MD5, verideki herhangi bir değişikliğin ileti özetinin değişmesi + olarak yansıması nedeniyle yüksek derecede itimat sağlayan keyfi + uzunlukta bir "ileti özeti" (bazen "parmakizi" dendiği de olur) + hesaplama algoritmasıdır.
+ +Content-MD5 başlığı öğe gövdesinin iki uç arasında ileti
+ bütünlük sınamasının yapılabilmesini sağlar. Bir istemci veya vekil
+ aktarılan öğe gövdesinde rastlantısal bir değişiklik olup olmadığını
+ saptamak için bu başlığın doğruluğunu sınayabilir. Başlık örneği:
Her istekte ileti özeti hesaplanacağından (değerler saklanmaz), bu + yönergenin sunucunuzda başarım sorunlarına yol açacağına dikkat + ediniz.
+ +Content-MD5, herhangi bir modül değil, sadece
+
Sunucudan zaman zaman kendi
Sunucu, belgenin içerik türünü istemciye bildirmek zorundadır. Eğer
+ sunucu bunu normal yollardan saptayamazsa içerik türü olarak
+ DefaultType ile belirtilen değeri gönderir. Örneğin, GIF
+ dosyaları bulunan bir dizinde .gif uzantısına sahip
+ olmayan dosyaların da bulunması durumunda, bu dizin için,
belirtilmesi uygun olurdu.
+ +İçerik türünün ne sunucu ne de yönetici (örneğin, vekil) tarafından + saptanabildiği durumlarda MIME türünün yanlış belirtilmesindense tür + belirtmemek tercih edilebilir. Bu, şöyle yapılabilir:
+DefaultType None sadece httpd-2.2.7 ve sonrasında
+ mevcuttur..
Bu yönergenin sadece öntanımlı MIME-türünü sağlaması nedeniyle
+
httpd’yi -D
+ seçeneğiyle çalıştırmaya eşdeğerdir.
Bu yönerge, başlatma betiğinde -D seçeneğinin
+ argümanlarını değiştirme gereği duymaksızın
</Directory> sadece ismi belirtilen dosya sistemi
+ dizininde ve bunun altdizinlerinde uygulanacak bir yönerge grubunu
+ sarmalamakta kullanılır. Bir dizin bağlamında kullanılabilecek her
+ yönergeye izin verilir. dizin-yolu bir dizinin tam yolu
+ olabileceği gibi Unix kabuk tarzı bir dosya ismi eşleştirme kalıbı da
+ olabilir. Kalıp dizgesinde, ? herhangi bir tek karakterle,
+ * herhangi bir karakter dizisiyle eşleşir. Ayrıca
+ [] karakter aralıkları da kullanılabilir. ‘/’ karakteri
+ ile hiçbir kalıp karakteri eşleşmez, bu bakımdan <Directory
+ /*/public_html> ile /home/user/public_html
+ değil, ama <Directory /home/*/public_html>
+ eşleşecektir. Örnek:
dizin-yolu argümanlarını belirtirken dikkatli
+ olmalısınız: Apache’nin dosyalara erişmekte kullandığı dosya sistemi
+ yolu ile bire bir eşleşmelidir. Belli bir
+ <Directory> dizinine uygulanan yönergeler, aynı
+ dizine farklı bir yoldan, örneğin başka bir sembolik bağ üzerinden
+ erişilen dosyalara uygulanmayacaktır.
~ karakterine ek olarak
yönergesi /www/ içindeki üç rakamdan oluşan dizinlerle
+ eşleşecektir.
Eğer çok sayıda (düzenli ifade olmayan)
bölümleri ile /home/web/dir/doc.html belgesine erişirken
+ şu aşamalardan geçilir:
AllowOverride None yönergesi uygulanır
+ (.htaccess dosyaları iptal edilir).AllowOverride FileInfo yönergesi uygulanır
+ (/home dizini için)./home/.htaccess,
+ /home/web/.htaccess ve
+ /home/web/dir/.htaccess dosyaları içindeki
+ FileInfo yönergeleri uygulanır.Normal bölümlerin tamamı uygulanıncaya kadar düzenli ifadeler + değerlendirilmez. Düzenli ifadelerin tamamı yapılandırma dosyasında + görüldükleri sıraya göre sınanırlar. Örneğin,
+ +düzenli ifadeli bölümü, tüm normal .htaccess dosyaları uygulanıncaya kadar
+ değerlendirilmeyecektir. Düzenli ifadeleri değerlendirmeye sıra gelince
+ düzenli ifade /home/abc/public_html/abc ile eşleştirilecek
+ ve buna ilişkin
<Directory /> için öntanımlı Apache
+ erişiminin Allow from All oluşuna dikkat ediniz. Bunu şöyle
+ bir blokla değiştirmeniz,
ve erişilebilir olmasını istediğiniz dizinleri ayrıca + belirtmeniz önerilir. Daha ayrıntılı bilgi edinmek için Güvenlik İpuçları belgesine + bakınız.
+ +Dizin bölümleri httpd.conf dosyasında yer alır.
+
</DirectoryMatch> yönergeleri
yönergesi /www/ içindeki üç rakamdan oluşan dizinlerle
+ eşleşecektir.
Bu yönerge
yapılandırması ile http://www.my.host.com/index.html
+ isteği /usr/web/index.html ile eşleştirilir.
+ dizin-yolu ile göreli dosya yolu belirtildiği takdirde belge
+ kök dizininin
Bu yönerge, sunucunun teslimat sırasında gerektiği takdirde bir dosya
+ içeriğinin okunması için bellek eşleme kullanıp kullanmayacağını
+ belirler. Öntanımlı olarak, bir isteğin yerine getirilmesi,
+
Böyle bellek eşleme kimi zaman başarım artışını beraberinde getirirse + de bazen sorunlardan kaçınmak için bellek eşlemeyi kapatmak daha iyi + sonuç verir:
+ +Bu tür sorunlardan dolayı zarar görülebilecek sunucu + yapılandırmalarında dosya teslimatında bellek eşlemlerinin kullanımını + şu şekilde iptal etmeniz gerekir:
+ +Bu özellik, sadece NFS dosya sistemi üzerinde sunulan dosyaları + kapsamak üzere şu şekilde kolayca kapatılabilir:
+ +Bu yönerge, dosya içeriğinin istemciye teslimi için
+
Çekirdeğin dosya gönderme mekanizması, okuma, gönderme ve tampon + ayırma işlemlerini ayrı ayrı yapmaktan kaçınır. Fakat bazı + platformlarda veya bazı dosya sistemlerinde aşağıda belirtilen işlemsel + sorunlardan kaçınmak için bu özelliği iptal etmek daha iyidir:
+ +Bu sorunlardan muzdarip sunucu yapılandırmaları için bu özelliği şöyle + iptal edebilirsiniz:
+ +Bu özellik, sadece bir NFS veya SMB dosya sistemi üzerinde sunulan + dosyaları kapsamak üzere şu şekilde kolayca kapatılabilir:
+ +Bir sorun çıktığında veya hata oluştuğunda Apache şu dört işlemden + birini yapacak şekilde yapılandırılabilir:
+ +İlk seçenek öntanımlıdır. Diğer üç seçenek
+
URL’ler yerel yollarda (
Bunlardan başka, Apache’nin kendi hata iletilerinin kullanılacağı özel
+ default değeri ile belirtilebilir. Normal şartlar altında
+ gerekmese de, bir şey belirtilmediği takdirde mevcut bir
+ default değeri açıkça belirtilerek örnekteki gibi
+ zorlanabilir:
http bulunan bir yol) belirtildiğinde, belge aynı sunucuda
+ olsa bile, Apache’nin istemciye belgeyi bulacağı yer için bir
+ yönlendirme göndereceğine dikkat ediniz. Bunun bazı istenmeyen etkileri
+ vardır; en önemlilerinden biri istemcinin hata kodu yerine bir
+ yönlendirme durum kodu alacak olmasıdır. Bu, bir URL’nin geçerliliğini
+ durum koduna göre saptayan istemciler veya robotlar için yanıltıcı
+ olacaktır. Buna ek olarak, ErrorDocument 401 için bir uzak
+ URL belirttiğiniz durumda istemci 401 durum kodunu almayacağı için
+ kullanıcıdan parola isteğinde bulunamayacaktır. Bu bakımdan,
+ ihtiyaç duyduğunuz takdirde, ErrorDocument 401
+ yönergesine yerel bir belge belirtmelisiniz.
Sunucunun ürettiği hata iletileri "çok kısa" olduğu takdirde, + Microsoft Internet Explorer (MSIE) öntanımlı olarak bu hata iletilerini + yoksayar ve bunun yerine kendi "kullanıcı dostu" hata iletilerini + kullanır. "Çok kısa" eşiği duruma göre değişmekle birlikte, genellikle, + hata iletileriniz 512 bayttan büyük olduğu takdirde MSIE kendi hata + iletileri yerine sunucunun ürettiği hata iletilerini gösterecektir. Bu + konuda daha fazla bilgiyi Q294807 kodlu Microsoft Knowledge Base makalesinde + bulabilirsiniz.
+ +Çoğu yerleşik hata iletisi özel iletilerle değiştirilebilse de bazı
+ durumlarda
2.0 öncesi sürümlerde iletiler bir çift çift-tırnak içine alınmayıp, + tek bir çift-tırnak ile başlatılması yeterli olurdu.
+dosya-yolu bir boru imi (|) ile başlatıldığı takdirde hata + iletilerinin hata günlüğünü işleme sokacak komuta borulanacağı + varsayılır.
+ +Dosya adı yerine syslog kullanılırsa, sistem desteklediği
+ takdirde günlük kaydı syslogd(8) üzerinden yürütülür. Öntanımlı olarak
+ local7 syslog oluşumu kullanılır. Bunu
+ syslog:oluşum sözdizimini kullanarak
+ değiştirebilirsiniz. Buradaki oluşum
+ syslog.conf(5) kılavuz sayfasında belirtilen oluşum isimlerinden biri
+ olabilir.
GÜVENLİK: Günlük dosyalarının saklandığı dizin, sunucuyu başlatan + kullanıcı dışındakiler tarafından yazılabilir olduğu takdirde + güvenliğinizin nasıl tehlikeye gireceği güvenlik ipuçları + belgesinde ayrıntılı olarak açıklanmıştır.
+Unix-dışı platformlarda dosya yolunu girerken, platform ters bölü + çizgilerini desteklese bile normal bölü çizgileri kullanmaya özen + göstermelisiniz. Genel olarak, dosya yollarını belirtirken + yapılandırma dosyası boyunca normal bölü çizgisi kullanmak her zaman + daha iyidir.
+ETag HTTP yanıt başlığını oluşturmakta kullanılacak
+ dosya özniteliklerini belirler.ETag (Entity Tag - öğe etiketi kısaltması) yanıt
+ başlığı alanını oluşturmakta kullanılacak dosya özniteliklerini
+ yapılandırır. (ETag değeri, ağ band genişliğinden kazanmak
+ için arabellek yönetiminde kullanılır.) Apache 1.3.22 ve öncesinde
+ ETag değeri daima dosyanın düğümü, boyutu ve son
+ değişiklik zamanından (mtime) oluşurdu.
ETag
+ alanı dahil edilmez.Öntanımlı ayarları miras alıp bunların kapsamını genişletmek/daraltmak
+ için INode, MTime ve Size
+ anahtar sözcüklerinin önüne + veya - imi
+ konabilir. Bu imlerin bulunmadığı bir anahtar sözcüğün varlığı halinde
+ hiçbir değer miras alınmaz.
Eğer bir dizinin yapılandırması
+ FileETag INode MTime Size ve alt dizini
+ FileETag -INode içeriyorsa bu alt dizinin (ve bir
+ geçersizleştirme olmadığı takdirde onun alt dizinlerinin) ayarları
+ FileETag MTime Size yapılandırmasına eşdeğer
+ olacaktır.
ETag karşılaştırmaları yapabilmek için
+ INode MTime Size yapılandırmasını kullanır. Eğer
+ ETag ayarı </Files> yönergesi ile
+ sonlandırılması gerekir. Bu bölüm içinde belirtilen yönergeler,
+ .htaccess dosyaları okunduktan sonra fakat
dosya-adı argümanının bir dosya ismi veya bir dosya ismi
+ kalıbı içermesi gerekir. Bir dosya ismi kalıbındaki her ?
+ imi bir karakterle eşleştirilirken * imi karakter dizileri
+ ile eşleştirilir. ~ imine ek olarak
satırı en bilinen resim dosyası biçimleriyle eşleşecektir. Bunun
+ yerine
.htaccess dosyaları içinde kullanılabilir. Bu
+ sayede kullanıcıların kendi dosyalarına erişimi dosya seviyesinde
+ denetlemelerine imkan sağlanmış olur.
satırı en bilinen resim dosyası biçimleriyle eşleşecektir.
+Bu yönerge, bir .htaccess dosyası veya bir
+ .gif uzantısı belirtmek istemiyorsanız şu yapılandırmayı
+ kullanabilirsiniz:
Mevcut None
+ değeriyle geçersiz kılabilirsiniz:
Bu yönerge oturum açabilecek konak isimlerini tespit edebilmek için
+ DNS sorgularını etkin kılar (ve sonuç REMOTE_HOST’ta
+ belirtilerek CGI/SSI’lere aktarılır). Double değeri
+ sorgunun çift yönlü yapılacağını belirtir. Yani, bir tersine sorgunun
+ ardından bir normal sorgu yapılır. Normal sorguda elde edilen IP
+ adreslerinden birinin istek yapan IP adresi ile eşleşmesi gerekir.
+ ("tcpwrappers" terminolojisinde buna PARANOID adı
+ verilir.)
Konak ismine göre erişimi denetlemek için
+ HostnameLookups
+ Double belirtilmedikçe genellikle çift yönlü sorgulama yapılmaz.
+ Örneğin, sadece HostnameLookups On belirtilmiş ve konak
+ ismi kısıtlamalarıyla korunmuş bir nesne için bir istek yapılmışsa çift
+ yönlü sorgunun başarısına bakılmaksızın CGI’lere
+ REMOTE_HOST olarak tek yönlü sorgu sonucu aktarılır.
Gerçekte ters yönlü sorguya gerek duyulmayan sitelerde ağ trafiğini
+ yormamak için Off, öntanımlı değerdir. Ayrıca, son
+ kullanıcıların DNS sorguları nedeniyle gereksiz yere bir beklemeye
+ maruz kalmaması için de bu daha iyidir. Yükü zaten ağır olan sitelerde,
+ DNS sorgularının görece uzun zaman alması nedeniyle bu yönergenin
+ değeri Off olarak bırakılmalıdır. Öntanımlı olarak kurulum
+ dizininizin bin alt dizinine kurulan
+
Bir Host: başlığı içermeyen HTTP/1.0 istekleriyle eşleşir.
+<IfDefine sınama>...</IfDefine>
+ bölümü koşullu olarak işleme sokulacak yönergeleri içerir.
+ Bir
!parametre-adıBirinci durumda bölüm içinde kalan yönergeler sadece + parametre-adı ile belirtilen parametre tanımlı ise işleme + sokulur. İkinci durumda ise tersi yapılır, yani sadece + parametre-adı ile belirtilen parametre tanımlı + değil ise yönergeler işleme sokulur.
+ +parametre-adı argümanı sunucu başlatılırken
+ -Dparametre ile
+ veya
<IfModule sınama>...</IfModule>
+ bölümü belli bir modülün varlığına veya yokluğuna göre işleme sokulacak
+ yönergeleri içerir. Bir
Birinci durumda bölüm içinde kalan yönergeler sadece
+ modül ile belirtilen modül Apache içine dahil edilmişse veya
+
modül argümanında bir modül betimleyici veya modülün derleme
+ sırasındaki dosya adı belirtilebilir. Örneğin, rewrite_module
+ bir betimleyici, mod_rewrite.c ise bir dosya ismidir. Eğer
+ modül çok sayıda kaynak dosyasından oluşuyorsa
+ STANDARD20_MODULE_STUFF dizgesini içeren dosyanın ismi
+ kullanılır.
Bu yönerge sunucu yapılandırma dosyalarının başka dosyaları içermesini + mümkün kılar.
+ +Çok sayıda dosyayı bir kerede alfabetik sırada içermek için kabuk tarzı
+ (fnmatch()) dosya ismi kalıp karakterleri kullanılabilir.
+ Ayrıca, eğer
Dosya yolu mutlak bir dosya yolu olarak belirtilebileceği gibi
+
Örnekler:
+ +Veya dizinler
Keep-Alive yönergesi HTTP/1.0 protokolüne bir eklenti olup
+ HTTP/1.1 protokolünün kalıcı bağlantı özelliği aynı TCP bağlantısı
+ üzerinden çok sayıda isteğin gönderilmesini mümkün kılan uzun süreli HTTP
+ oturumları açılmasını sağlar. Bunun, çok sayıda resim içeren HTML
+ belgelerin yanıt zamanlarında bazı durumlarda %50’lik bir hızlanmayla
+ sonuçlandığı gösterilmiştir. Kalıcı bağlantıları etkin kılmak için
+ yönerge KeepAlive On şeklinde kullanılır.
HTTP/1.0 istemcileri için kalıcı bağlantılar sadece bir istemci + tarafından özellikle istendiği takdirde kullanılabilir. Ek olarak, + HTTP/1.0 istemci kalıcı bağlantıları sadece içerik uzunluğu baştan + bilindiği zaman kullanılabilir. Bu, CGI çıktısı, SSI sayfaları ve + sunucunun ürettiği dizin listeleri gibi genellikle HTTP/1.0 istemcilere + kalıcı bağlantılar kullanmayan devingen içeriklere uygulanır. HTTP/1.1 + istemciler için kalıcı bağlantılar aksi belirtilmedikçe öntanımlıdır. + İstemci istediği takdirde, uzunluğu bilinmeyen içerik kalıcı bağlantılar + üzerinden gönderilirken parçalı kodlama kullanılacaktır.
+ +Bir istemci kalıcı bağlantı kullandığı takdirde, bağlantı üzerinden kaç
+ istek gönderilirse gönderilsin,
+
Sunucunun kalıcı bir bağlantıyı kapatmadan önce bir sonraki isteği kaç
+ saniye bekleyeceğini belirler. İstek alındıktan sonra
İsme dayalı sanal konak bağlamında,
Erişim denetleyicileri normalde tüm erişim yöntemleri
+ için etkindir ve olağan olanı da budur. Genel durum olarak,
+ erişim denetim yönergeleri bir
POST, PUT ve DELETE yöntemleri
+ için uygulanmakta, diğer tüm yöntemler korumasız bırakılmaktadır:
Birden fazla bölümde kullanılabilecek yöntem isimleri: GET,
+ POST, PUT, DELETE,
+ CONNECT, OPTIONS,
+ PATCH, PROPFIND, PROPPATCH,
+ MKCOL, COPY, MOVE,
+ LOCK ve UNLOCK. Yöntem isimleri harf
+ büyüklüğüne duyarlıdır. GET yöntemi sınırlanırsa
+ HEAD istekleri de sınırlanmış olur. TRACE
+ yöntemi sınırlanamaz (bkz,
</LimitExcept> argüman olarak belirtilenler
+ dışında kalan HTTP yöntemleri için kullanılacak erişim
+ sınırlayıcıları gruplamakta kullanılır. Yani,
Örnek:
+ +Örneğin, özgün istekleri dahili olarak bir CGI betiğine yönlendiren
+
Yönerge her istek için değerlendirmeye alınacak iki farklı sınırlama + için kullanılabilir. İlk sayı ardarda gelebilen dahili + yönlendirmelerin azami sayısını, ikinci sayı ise istek içi + isteklerin ne kadar iç içe olabileceğini belirler. Tek bir + sayı belirtilirse iki sınırlama için de aynı değer + kullanılır.
+ +Bu yönerge, bir istek gövdesinde izin verilen bayt sayısını 0 (sınırsız + anlamında) ile 2147483647 (2GB) arasında sınırlamak için kullanılır.
+ +PUT yöntemi gerçeklenimleri, en azından, sunucunun o
+ özkaynak için kabul etmek isteyeceği herhangi bir gösterim kadar büyük
+ bir değer gerektirecektir.
Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu + yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim + imkanı sağlar.
+ +Eğer, örneğin, belli bir yere dosya yükleme izni verir ve buraya + yüklenebilecek dosya boyutunu 100 kB ile sınırlamak isterseniz yönergeyi + şöyle kullanabilirsiniz:
+ +sayı, en küçük 0 (sınırsız anlamında), en büyük 32767
+ olabilir. Öntanımlı değer bir derleme zamanı sabiti olan
+ DEFAULT_LIMIT_REQUEST_FIELDS ile belirlenir (dağıtımla gelen
+ değeri 100’dür).
Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu + yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim + imkanı sağlar. Eğer normal istemciler sunucudan istekte bulunurken çok + fazla başlık alanı gönderildiğine dair bir hata iletisi alırlarsa bu + değerin arttırılması gerekir.
+ +Örnek:
+ +Bu yönerge, HTTP istek başlığında izin verilecek bayt sayısını + belirler.
+ +Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu + yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim + imkanı sağlar.
+ +Örnek:
+ +Bu yönerge, HTTP istek satırında izin verilecek bayt sayısını + belirler.
+ +GET isteğinin sorgu
+ kısmında aktarılabilen her bilgi dahil, özkaynak isimlerinden her birini
+ tutabilecek kadar büyük olmasını gerektirir.
Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu + yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim + imkanı sağlar.
+ +Örnek:
+ +Bir XML temelli istek gövdesinin azami bayt sayısını belirler. Değer
+ olarak 0 belirtildiğinde herhangi bir boyut sınaması
+ yapılmaz.
Örnek:
+ +</Location> yönergesi ile biten bir alt
+ bölüm başlatır. .htaccess dosyaları okunup
<Location /> kullanımıdır.
Kaynağa yapılan (vekil olmayan) tüm istekler için eşleşecek URL,
+ /yol/ şeklinde bir URL yolu olmalı; ne şema, ne konak ismi
+ ne port ne de sorgu dizgesi içermelidir. Vekil istekleri için eşleşecek
+ URL ise şema://sunucuadı/dosya-yolu şeklinde olmalı ve önek
+ içermelidir.
URL içinde dosya kalıp karakterleri kullanılabilir. Dosya kalıp
+ karakterleri bulunan bir dizgede bulunan ? karakteri
+ herhangi bir tek karakterle eşleşirken * karakteri herhangi
+ bir karakter dizisi ile eşleşecektir. URL yolu içindeki / karakterleri
+ ile hiçbir dosya kalıp karakteri eşleşmez.
Ayrıca, ~ karakteri eşliğinde
yönergesi /ek/veri ve /hususi/veri alt
+ dizgeleriyle eşleşecektir.
mesela.dom’dan gelen isteklere izin vermek için şöyle bir
+ uygulama yapabilirsiniz:
Bölü çizgisinin URL içinde bulunduğu yere bağlı olarak özel anlamları
+ vardır. Dosya sistemindeki çok sayıda yanyana kullanımının tek bir bölü
+ çizgisi olarak ele alındığı duruma alışkın olanlar olabilir (yani,
+ /home///foo ile /home/foo aynıdır). URL
+ uzayında bunun böyle olması gerekli değildir. Eğer çok sayıda bölü
+ çizgisini yanyana belirtmeniz gerekiyorsa
Örneğin, <LocationMatch ^/abc> yönergesi
+ /abc ile eşleşecek ama //abc ile
+ eşleşmeyecektir. <Location
+ /abc/def> belirtirseniz ve istek /abc//def
+ şeklinde olursa bu ikisi eşleşir.
yönergesi /ek/veri ve /hususi/veri alt
+ dizgeleriyle eşleşecektir.
| Seviye | +Açıklama | +Örnek | +
|---|---|---|
emerg |
+ Acil durumlar - sistem kullanışsız. | +"Child cannot open lock file. Exiting" (Alt süreç kilit + dosyasını açamıyor. Çıkılıyor) |
+
alert |
+ Ne yapılacaksa beklemeden yapılmalı. | +"getpwuid: couldn't determine user name from uid" (getpwuid: + Kullanıcı ismi numarasından saptanamadı) |
+
crit |
+ Kriz durumları. | +"socket: Failed to get a socket, exiting child" (socket: bir + soket alınamadı, alt süreç çıkıyor) |
+
error |
+ Hata durumları. | +"Premature end of script headers" (Betik başlıkları + beklenmedik şekilde bitti) |
+
warn |
+ Uyarı durumları. | +"child process 1234 did not exit, sending another
+ SIGHUP" (1234 alt süreci çıkmadı, başka bir SIGHUP + gönderiliyor) |
+
notice |
+ Normal fakat önemli durum. | +"httpd: caught SIGBUS, attempting to dump core in
+ ..." (httpd: SIGBUS alındı, core dökümlenmeye çalışılıyor: + ...) |
+
info |
+ Bilgilendirme. | +"Server seems busy, (you may need to increase
+ StartServers, or Min/MaxSpareServers)..." (Sunucu meşgul + görünüyor, (StartServers veya Min/MaxSpareServers değerlerini + arttırmanız gerekebilir)...) |
+
debug |
+ Hata ayıklama seviyesi iletileri | +"Opening config file ..." (... yapılandırma dosyası + açılıyor) |
+
Belli bir seviye belirtildiğinde daha yüksek seviyeden iletiler de
+ raporlanır. Örneğin, LogLevel info belirtildiğinde
+ notice ve warn günlük seviyelerinin iletileri
+ ayrıca raporlanacaktır.
En az crit seviyesinin kullanılması önerilir.
Örnek:
+ +Günlük iletileri normal bir dosyaya yazılırken notice
+ seviyesinden iletiler engellenemez ve dolayısıyla daima raporlanırlar.
+ Ancak, günlük kaydı syslog kullanılarak yapılıyorsa bu
+ uygulanmaz.
0
+ belirtilirse istek sayısı sınırsız olur. Sunucu başarımını yüksek tutmak
+ için yüksekçe bir değer belirtmenizi öneririz.
Örnek:
+ +adres olarak bir konak ismi de belirtebilirsiniz ama daima + bir IP adresi kullanmanızı öneririz. Örnek:
+ +“Ana sunucu” ve _default_ sunucuların bir
+
Seçimlik olarak, isme dayalı sanal konakların kullanması gereken port + numarasını örnekteki gibi belirtebilirsiniz:
+ +IPv6 adresleri belirtilirken örnekteki gibi köşeli ayraçlar arasına + alınmalıdır:
+ +İsteklerin bütün arabirimlerden alınacağını belirtmek için değer olarak
+ * belirtebilirsiniz:
seçenek olarak hiçbir ek özellik etkin olmayacaksa
+ None, aksi takdirde aşağıdakilerden biri veya bir kaçı
+ belirtilir:
AllMultiViews hariç tüm seçenekler. Bu öntanımlıdır.ExecCGIFollowSymLinksSembolik bağlar izlense bile
Ayrıca, bu seçenek bir
Sembolik bağ sınamaları, atlatılabilir yarış koşullarına konu + olduğundan bu seçeneğin yokluğu bir güvenlik sınırlaması olarak + değerlendirilmemelidir.
+IncludesIncludesNOEXEC#exec cmd
+ ve #exec cgi iptal edilir. Ancak, #include virtual hala mümkün olacaktır.Indexesindex.html
+ gibi) belirtilmemişse MultiViewsSymLinksIfOwnerMatchBu seçenek bir
Sembolik bağ sınamaları, atlatılabilir yarış koşullarına konu + olduğundan bu seçenek bir güvenlik sınırlaması olarak + değerlendirilmemelidir.
Normalde, bir dizine çok sayıda + veya - simgesi konmuş seçenekler varsa, o
+ seçenekler katıştırılır. Önüne + konmuş seçenekler
+ mevcutlara eklenirken - konmuş seçenekler silinir.
+ veya - imli seçenekler içeren
+
Örneğin, + ve - imleri olmaksızın,
yapılandırmasıyla /web/docs/spec dizininde sadece
+ Includes seçeneği etkin olacaktır. Bununla birlikte, ikinci
+ + ve
+ - imleri kullanılırsa,
yapılandırmasıyla /web/docs/spec dizininde
+ FollowSymLinks ve Includes seçenekleri etkin
+ olacaktır.
-IncludesNOEXEC veya -Includes kullanımı,
+ önceki ayarların ne olduğuna bakılmaksızın sunucu taraflı içeriğin
+ tamamen iptaline sebep olur.
Herhangi bir başka değer belirtilmedikçe All
+ öntanımlıdır.
1 veya 2 değer alır. İlk değer bütün süreçler için sanal özkaynak
+ sınırını, ikinci değer ise kesin özkaynak sınırını belirler. İki değer de
+ birer sayı olabileceği gibi bu sınırın işletim sistemi yapılandırmasında
+ izin verilen üst sınıra ayarlanacağını belirtmek üzere max
+ olabilir. Kesin özkaynak sınırını yükseltmek için sunucunun
+ root olarak veya sistem açılışı sırasında çalıştırılması
+ gerekir.
Bu sınırlar Apache’nin kendi alt süreçlerine değil, isteklere yanıt + verirken Apache alt süreçlerinin çatalladıkları süreçlere uygulanır. + Bunlar CGI betikleri ve SSI çalıştırma komutları olabilir fakat borulu + günlük kaydı gibi ana Apache süreci tarafından çatallanmış süreçler + olmazlar.
+ +İşlemci özkaynak sınırları saniye cinsinden ifade edilir.
+1 veya 2 değer alır. İlk değer bütün süreçler için sanal özkaynak
+ sınırını, ikinci değer ise kesin özkaynak sınırını belirler. İki değer de
+ birer sayı olabileceği gibi bu sınırın işletim sistemi yapılandırmasında
+ izin verilen üst sınıra ayarlanacağını belirtmek üzere max
+ olabilir. Kesin özkaynak sınırını yükseltmek için sunucunun
+ root olarak veya sistem açılışı sırasında çalıştırılması
+ gerekir.
Bu sınırlar Apache’nin kendi alt süreçlerine değil, isteklere yanıt + verirken Apache alt süreçlerinin çatalladıkları süreçlere uygulanır. + Bunlar CGI betikleri ve SSI çalıştırma komutları olabilir fakat borulu + günlük kaydı gibi ana Apache süreci tarafından çatallanmış süreçler + olmazlar.
+ +Bellek özkaynak sınırları süreç başına bayt sayısı olarak ifade edilir. +
+1 veya 2 değer alır. İlk değer bütün süreçler için sanal özkaynak
+ sınırını, ikinci değer ise kesin özkaynak sınırını belirler. İki değer de
+ birer sayı olabileceği gibi bu sınırın işletim sistemi yapılandırmasında
+ izin verilen üst sınıra ayarlanacağını belirtmek üzere max
+ olabilir. Kesin özkaynak sınırını yükseltmek için sunucunun
+ root olarak veya sistem açılışı sırasında çalıştırılması
+ gerekir.
Bu sınırlar Apache’nin kendi alt süreçlerine değil, isteklere yanıt + verirken Apache alt süreçlerinin çatalladıkları süreçlere uygulanır. + Bunlar CGI betikleri ve SSI çalıştırma komutları olabilir fakat borulu + günlük kaydı gibi ana Apache süreci tarafından çatallanmış süreçler + olmazlar.
+ +Süreç sayısı sınırı kullanıcı başına süreç sayısına sınırlama getirir. +
+ +CGI süreçleri sunucu kullanıcı kimliğinden farklı bir kullanıcı
+ kimliği altında çalışmıyorsa bu yönerge sunucunun kendi oluşturduğu
+ süreç sayısını sınırlayacaktır. Bunun kanıtı error_log’da
+ iletilerin çatallanamamasıdır.
Registry-Strict seçeneği Apache
+2.0 ve sonrası için geçerlidir.Bu yönerge Apache’nin CGI betiklerini çalıştıracak yorumlayıcıyı nasıl
+ tespit edeceğini belirler. Script öntanımlı olup Apache’nin
+ yorumlayıcı olarak betiğin diyezli ünlem satırında (#! ile
+ başlayan ilk satır) belirtilen yorumlayıcıyı kullanacağını belirtir.
+ Win32 sistemlerinde bu satır genellikle şöyledir:
perl yorumlayıcının yeri PATH değişkeninde
+ kayıtlı ise şöyle de olabilir:
ScriptInterpreterSource Registry değeri ise betik dosyası
+ uzantısının (.pl gibi) Windows Sicili içindeki
+ HKEY_CLASSES_ROOT ağacında arama yapmak için bir arama
+ anahtarı olarak kullanılmasını sağlar. Betik dosyasını çalıştırmak için
+ tanımlanmış komutu bulmak için Shell\ExecCGI\Command yoluna,
+ orada yoksa Shell\Open\Command yoluna bakılır. İkisi de
+ yoksa son çare olarak Script seçeneğinin davranışına
+ dönülür.
ScriptInterpreterSource Registry yapılandırmasını
+ kullanırken dikkatli olun. Registry seçeneği genellikle
+ çalıştırılmayacak dosyalar için istenmeyen program çağrılarına sebep
+ olabilir. Örneğin, çoğu Windows sisteminde .htm dosyaları
+ için ön tanımlı "open" komutu Microsoft Internet Explorer’ın
+ çalıştırılmasına sebep olur; bu bakımdan, betik dizininde bulunan bir
+ .htm dosyası için yapılan bir HTTP isteği tarayıcının sunucu
+ artalanında çalıştırılmasına sebep olacaktır. Bu, sistemi bir kaç dakika
+ içinde çökertmek için iyi bir yoldur.
Registry-Strict seçeneği Apache 2.0’da yeni olup
+ Registry seçeneğinin yaptığını
+ Shell\ExecCGI\Command yolu için yapar. ExecCGI
+ sistem tarafından bilinen bir anahtar olmadığından Windows Siciline elle
+ kaydedilmesi gerekir ve dolayısıyla sisteminiz üzerinde istenmeyen
+ program çağrılarına sebep olmaz.
httpd sağlanan
+ değerin bir URL olmadığını saptarsa değerin bir eposta adresi olduğuna
+ hükmeder ve önüne mailto: getirerek onu bir hiper bağ hedefi
+ olarak kullanır. Çoğu CGI betiği bir eposta adresi belirtildiği kabulünü
+ yaptığından değer olarak bir URL değil bir eposta adresi belirtmeniz
+ önerilir. Eğer bir URL belirtecekseniz hedef sizin denetiminizde olan
+ başka bir sunucuda bulunmalıdır, yoksa kullanıcılar hata durumunda bu
+ adrese erişemeyebilirler.
Kullanıcıların sunucu hakkında konuşurken isminizden bahsetmemeleri için + burada belirtilecek adresin sırf bu işe adanmış bir adres olması daha + iyidir. Örnek:
+ +falan.filan.dom
+ olduğu halde makinenin bir de www.filan.dom diye bir de DNS
+ rumuzu varsa ve HTTP sunucunuzun bu rumuzla kendini özdeşleştirmesini
+ isterseniz bunu şöyle belirtebilirsiniz:
Bir
İsme dayalı sanal konaklar
+ kullanıyorsanız, Host:
+ başlığında bu sanal konakla eşleşecek konak ismini belirler.
Bazen sunucu, bir ters vekil, yük dengeleyici veya SSL yük aktarım
+ uygulaması gibi bir aygıtın arkasında çalışır. Böyle durumlarda sunucunun
+ kendine yönelik URL’leri doğru üretebildiğinden emin olmak için
+ https:// şeması ve port numarası belirtilir.
Sunucunun kendine yönelik URL’lerin belirtilen portu içerip içermediğini
+ veya istemcinin yaptığı istekte belirtilen port numarasının verilip
+ verilmediğinin saptamasını sağlayan (örneğin,
conf/ ve
+ logs/ gibi alt dizinler içerir.
httpd için -d seçeneğiOff değeri öntanımlı değer olup dipnot satırının
+ gösterilmemesini sağlar (Apache-1.2 ve öncesi ile uyumluluk).
+ On değeri, sunucu sürüm numarası ve hizmeti sunan sanal
+ konağın isminden (EMail değeri bu
+ ikisine ek olarak satıra
2.0.44 sürümünden beri sunucu sürüm numarasının ayrıntıları
Server HTTP yanıt başlığını yapılandırır.
+Bu yönerge Server HTTP yanıt başlığı alanında istemcilere
+ sunucunun işletim sistemi, sunucuyla derlenmiş modüller, vs. hakkında
+ bilgi verilip verilmeyeceğini belirler.
ServerTokens Prod[uctOnly]Server:
+ ApacheServerTokens MajorServer:
+ Apache/2ServerTokens MinorServer:
+ Apache/2.0ServerTokens Min[imal]Server:
+ Apache/2.0.41ServerTokens OSServer: Apache/2.0.41
+ (Unix)ServerTokens Full (ya da belirtilmezse)Server: Apache/2.0.41
+ (Unix) PHP/4.2.2 MyMod/1.2Bu ayarlama sunucunun tamamını etkiler ve her sanal konak için + farklılaştırılamaz.
+ +2.0.44 sürümünden itibaren bu yönerge
Bir .htaccess dosyasına veya bir .htaccess dosyasına şöyle bir satır
+ koyabilirsiniz:
Başka bir örnek: http://localhost/status gibi bir istek
+ yapıldığında sunucunun bir durum bilgisi göstermesi için
+ httpd.conf dosyasına şöyle bir satır koyabilirsiniz:
Evvelce tanımlanmış bir None değeriyle geçersiz hale getirebilirsiniz.
Bilginize:
Birden fazla süzgeç belirtilmek istenirse birbirlerinden noktalı + virgüllerle ayrılmalı ve çıktıyı işleyecekleri sıraya uygun olarak + sıralanmalıdırlar.
+Örneğin, aşağıdaki yapılandırma ile /www/data/ dizinindeki
+ bütün dosyalar sunucu taraflı içerik kapsamında ele alınacaktır.
Birden fazla süzgeç belirtilmek istenirse birbirlerinden noktalı + virgüllerle ayrılmalı ve çıktıyı işleyecekleri sıraya uygun olarak + sıralanmalıdırlar.
+TRACE isteklerinde davranış şeklini belirler
+Bu yönerge çekirdek ve vekil (TRACE davranışını değiştirir.
+ Öntanımlı olan TraceEnable on ile RFC 2616’dan kaynaklanan
+ ve isteğe herhangi bir istek gövdesinin eşlik etmesine izin vermeyen
+ TRACE isteklerine izin verilir. TraceEnable off
+ ile çekirdek ve vekil (TRACE isteklerine yanıt olarak bir 405
+ (Yönteme izin verilmiyor) hatası döndürür.
TraceEnable extended ile sadece sınama ve tanı koyma
+ amaçlarına yönelik olarak istek gövdelerine izin verilir. Asıl sunucu
+ istek gövdesini 64k ile sınırlar (Transfer-Encoding: chunked
+ kullanılmışsa bölüm başlıkları için 8k daha). Asıl sunucu yanıt
+ gövdesinde tüm başlıkları ve bölüm başlıklarının tamamını yansıtacaktır.
+ Vekil sunucuda ise istek gövdesi için 64k’lık sınır yoktur.
Apache‘nin çoğu durumda özüne yönelik URL‘ler (isteğin tekrar aynı
+ sunucuya yapıldığı bir URL türü) oluşturması gerekir.
+ UseCanonicalName On ile Apache, sunucu için meşru ismi ve
+ portu oluşturmak için SERVER_NAME ve SERVER_PORT değerlerinde ve tüm
+ özüne yönelik URL’lerde kullanılır.
UseCanonicalName Off ile Apache, özüne yönelik URL’leri
+ varsa istemci tarafından sağlanan konak ismini ve portu kullanarak
+ oluşturur; bunlar istemci tarafından sağlanmamışsa yukarıda tanımlanan
+ işleme başvurulur. Bu değerler, isme
+ dayalı sanal konakları gerçekleştirirken kullanılan değerlerle aynı
+ olup aynı istemcilerle kullanılabilir. SERVER_NAME ve
+ SERVER_PORT CGI değişkenleri de istemci tarafından sağlanan
+ isim ve portla oluşturulur.
Bir örnek olarak, iç ağdaki istemcilerin sunucuya www gibi
+ bir kısa isim kullanarak bağlandığı durumu ele alırsak daha yararlı olur.
+ Kullanıcılar bir kısa isim ve bir dizin isminden oluşan ve bir / ile
+ sonlandırılmamış http://www/splat şeklinde bir istek
+ yaparlarsa, Apache onları http://www.mesela.dom/splat/
+ adresine yönlendirecektir. Eğer kimlik doğrulama da etkinse bu
+ kullanıcının iki defa kimlik doğrulamasına sokulmasına sebep olacaktır
+ (bir kere www için bir kere de www.mesela.dom
+ için; daha ayrıntılı bilgi için SSS’y
+ e bakınız). Fakat http://www/splat/ adresine yönlendirecekti.
UseCanonicalName DNS diye üçüncü bir seçenek daha vardır ve
+ istek yaparken Host: başlığını kullanmayan eski istemcileri
+ desteklemek amacıyla IP’ye dayalı sanal konaklarla kullanmak için
+ tasarlanmıştır. Bu seçenek etkin olduğunda Apache, istemciyi özüne
+ yönelik URL’lerle doğru yere bağlamak için sunucu IP adresi üzerinde bir
+ ters DNS sorgusu yapar.
Eğer CGI’ler SERVER_NAME değerleri için önkabuller
+ yapıyorlarsa bu seçenek işlerinin bozulmasına yol açabilir. Aslında
+ istemciler konak ismi olarak istedikleri değeri vermekte özgürdürler.
+ Fakat eğer CGI, özüne yönelik URL’leri oluştururken sadece
+ SERVER_NAME değerini kullanıyorsa bu istendiği gibi
+ çalışacaktır.
Apache‘nin çoğu durumda özüne yönelik URL‘ler (isteğin tekrar aynı
+ sunucuya yapıldığı bir URL türü) oluşturması gerekir. Apache UseCanonicalPhysicalPort
+ On ile olası port olarak istek tarafından kullanılmakta olan
+ fiziksel portu kullanacaktır. UseCanonicalPhysicalPort Off
+ olduğunda ise geçerli bir port numarası oluşturmak için asıl fiziksel
+ port yerine yapılandırma bilgisi kullanılır.
Fiziksel port kullanımı etkin olduğunda işlemler şu sırayla
+ yürütülür:
+ UseCanonicalName On
Servername yönergesinde belirtilen portUseCanonicalName Off | DNS
+ Host: başlığından çözümlenen portServername yönergesinde belirtilen portUseCanonicalPhysicalPort Off olduğunda işlem sırasında
+ fiziksel port adımları atlanır.
</VirtualHost> birlikte sadece belli bir sanal konağa
+ uygulanacak yönergeleri sarmalamakta kullanılırlar. Bir sanal konak
+ kapsamında belirtilebilecek her yönerge kullanılabilir. Sunucu belli bir
+ sanal konak üzerindeki bir belge için bir istek aldığında
NameVirtualHost * ile birlikte tüm IP adresleri ile
+ eşleşmek üzere * karakteri._default_ dizgesi.İsteğe bağlı port numarasını belirtmeyi mümkün kılmak için IPv6 + adresleri köşeli ayraç içine alınır. IPv6 adresi kullanılan bir örnek:
+ +Her sanal konağın ya farklı bir IP adresi ve port ile ya da farklı bir
+ konak ismiyle eşleşmesi gerekir. Birinci durumda sunucu makinesinin çok
+ sayıda adresten IP paketleri kabul edecek şekilde yapılandırılması
+ gerekir. (Eğer makinede çok sayıda ağ arabirimi yoksa bu, işletim sistemi
+ desteklediği takdirde ifconfig alias komutuyla
+ sağlanabilir.)
IP’ye dayalı sanal konakları kullanıyorsanız, diğer sanal konaklarda
+ açıkça belirtilmemiş IP adresleriyle eşleşecek sanal konağı
+ _default_ özel ismiyle belirtebilirsiniz. "Ana" sunucu
+ yapılandırmasında _default_ diye bir sanal konağın
+ bulunmaması halinde, hiçbir IP adresi eşleşmesi bulunamadığı takdirde
+ _default_ sanal konak yapılandırması kullanılır. Bu konuda
+ daha ayrıntılı bilgi için isme dayalı
+ sanal konaklar belgesine bakınız.)
Eşleşilecek portu değiştirmek için bir :port
+ belirtebilirsiniz. Port bu şekilde değiştirilmediği takdirde ana
+ sunucunun son :* kullanabilirsiniz. (Bu,
+ _default_ kullanıldığı takdirde önerilir.)
Her
Günlük dosyalarının sunucuyu çalıştıran kullanıcıdan başka herkes + tarafından yazılabilen bir yerde saklanmasından dolayı ortaya çıkabilecek + güvenlik sorunları hakkında daha ayrıntılı bilgi için güvenlik ipuçları belgesine + bakınız.
+Normal şartlar altında, durağan dosyaların öntanımlı eylemcileri gibi
+ istek eylemcileri gerek kalmadığında istek gövdesini iptal ederler. Sonuç
+ olarak, mod_include gibi süzgeçler, özgün istek (süzme işlemi
+ gerçekleştikten sonra artık gerekmediğinden istek gövdesini iptal eden)
+ bir POST isteği olsa bile, GET isteklerinin
+ yapılmasına sadece diğer URL’lerin alt istekler olarak içerilmesi
+ şartıyla izin verir.
Bu yönergede belirtilen değer sıfırdan büyük olduğunda, istek
+ eylemciler, istek gövdesini iptal etmek yerine süzgeçler tarafından
+ kullanılmak üzere belirtilen azami boyuta ayarlarlar. mod_include
+ süzgecinin kullanılması durumunda, bir durağan shtml dosyası için bir
+ POST isteği, ardından gelen isteklerin, önceki gibi
+ GET istekleri değil, POST istekleri olmasına
+ yol açacaktır.
Bu özellik,
Bilginize: İstekler tamamlanana kadar alınan istekler + geçici RAM içinde biriktirilir. Sonuç olarak, bahsi geçen yükü karşılamak + için yeterince RAM’in mevcut olması gerekir. Bu yönergeyi kullanmakla, + istek gövdesini saklamaya yetecek olası en düşük değerle bile URL + uzayınız için gereken yeri kısıtlamış olursunuz.
+ +Eğer isteğin uzunluğu bu yönerge ile ayrılan azami uzunluğu aşarsa
+ sunucu yanıt olarak 413 Request Entity Too Large (413
+ İstenen Öğe Çok Büyük) hatasını döndürür.
İstek gövdesini iptal etmek yerine kendi amaçları doğrultusunda bunları
+ biriktiren
Sanal Konak (Virtual Host) terimi tek bir makine üzerinde + birden fazla sitenin (www.sirket1.dom, www.sirket2.dom gibi) barındırılma + uygulamasını betimler. Sanal konaklar, "IP’ye + dayalı" veya "isme dayalı" olabilir; + birincisinde, her site ayrı bir IP adresinden sunulurken, ikincisinde her + IP adresinde birden fazla site sunulur. Olayda aynı fiziksel sunucu + kullanıldığı halde bu sunucu son kullanıcıya görünür değildir.
+ +Apache yazılımsal olarak IP’ye dayalı sanal konakları destekleyen ilk + sunuculardan biridir. 1.1 sürümünden itibaren Apache hem IP’ye dayalı hem + de isme dayalı sanal konakları desteklemektedir. İsme dayalı sanal + konaklara bazen konağa dayalı sanal konaklar veya IP’ye + dayanmayan sanal konaklar da denmektedir.
+ +Aşağıda, Apache’nin 1.3 sürümü ve sonrası için sanal konak desteğini bütün + ayrıntıları ile açıklayan belgeler listelenmiştir.
+ +Sanal konak yapılandırmanız üzerinde hata ayıklamaya çalışıyorsanız
+ Apache’nin -S komut satırı seçeneği şu şekilde çok işinize
+ yarayabilir:
Bu komut, yapılandırma dosyasının Apache yorumunu dökümler. IP
+ adreslerinin ve sunucu isimlerinin dikkatli bir incelemesi, yapılandırma
+ yanlışlarınızı keşfetmenize yardımcı olabilir. (Diğer komut satırı
+ seçenekleri için
IP’ye dayalı deyince, sunucunun her IP’ye dayalı + sanal konak için ayrı bir IP adresine sahip olduğunu anlıyoruz. + Bunun olması için, makine ya çok sayıda ağ bağlantısına sahiptir ya da + makinede, günümüzde çoğu işletim sistemi tarafından desteklenen sanal + arabirimler kullanılıyordur. (Sanal arabirimlerle ilgili ayrıntılar için + sistem belgelerinize bakınız; bu konu genellikle IP rumuzları (ip aliases) + olarak geçer ve ayarlamak için genellikle "ifconfig" komutu + kullanılır.)
+ +Çok sayıda konağı desteklemek üzere Apache iki şekilde
+ yapılandırılabilir. Ya her konak için ayrı bir
Çok sayıda süreç kullanıyorsanız:
+ +Tek bir süreç kullanıyorsanız:
+ +Her sanal konak için ayrı bir
Burada konak ismi yerine IP adresi kullanmanız önerilir (ayrıntılar için + DNS ile ilgili konular belgesine + bakınız).
+ +Bu durum için, ana sunucu ve sanal konakların tümüne gelen istekler tek
+ bir
Burada konak isimlerinin yerlerine IP adreslerini kullanmanız önerilir + (ayrıntılar için DNS ile ilgili konular + belgesine bakınız).
+ +Süreç oluşturmayı denetleyen yönergeler ve bir kaç başka yönerge dışında
+ hemen hemen tüm yapılandırma yönergeleri
suEXEC sarmalayıcısı kullanıldığı takdirde
+
GÜVENLİK:Günlük dosyalarının yazılacağı yeri belirlerken, + Apache’yi başlatan kullanıcıdan başka kimsenin yazamayacağı bir yerin + seçilmesi bazı güvenlik risklerini ortadan kaldırmak bakımından önemlidir. + Ayrıntılar için güvenlik ipuçları + belgesine bakınız.
+Bu belgede isme dayalı sanal konakların ne zaman, nasıl kullanılacakları + açıklanmıştır.
+IP’ye dayalı sanal konaklarda sunulacak sanal konağı doğru tespit + edebilmek için bağlantının yapıldığı IP adresine bakılır. Bu bakımdan her + konak için ayrı bir IP adresine gereksinim vardır. İsme dayalı sanal + konaklarda ise sunucu, istemcinin HTTP başlığının bir parçası olarak + gönderdiği konak adını kullanır. Bu teknikte aynı IP adresini çok sayıda + farklı konak kullanabilir.
+ +İsme dayalı sanal barındırma nispeten daha kolaydır, çünkü her konak + ismini doğru IP adresiyle eşlemek için DNS sunucunuzu yapılandırdıktan + sonra Apache HTTP sunucusunu farklı konak isimlerini tanıyacak şekilde + yapılandırmanız yeterli olur. İsme dayalı sanal barındırma ayrıca zaten + kıt olan IP adreslerine talebi de azaltır. Bu nedenle, IP’ye dayalı sanal + konakları kullanmanızı gerektirecek çok özel bir sebep olmadıkça isme + dayalı sanal konaklar kullanmalısınız. IP’ye dayalı sanal konakların + kullanımını gerektirebilecek bazı durumlar:
+ +İsme dayalı sanal konakları kullanmak için, bu konaklar için istekleri
+ kabul edecek sunucuya IP adresini (ve muhtemelen portu da)
+ belirtmelisiniz. Bu işlem * belirtebilirsiniz. Çok sayıda
+ port kullanmayı planlıyorsanız (SSL çalıştırmak gibi), argümana
+ *:80 şeklinde port ekleyebilirsiniz. Yalnız,
Sonraki adım sunacağınız her konak için ayrı bir
Mevcut sitenize sanal konaklar eklerseniz, mevcut siteniz için de bir
+
Örnek olarak, www.biralan.tld adresinden sitenizi sunmakta
+ olduğunuzu ve bunun yanına aynı IP adresini kullanan
+ www.digeralan.tld sanal konağını eklemek istediğinizi
+ varsayalım. Bunun için httpd.conf dosyanıza basitçe şu
+ satırları ekleyebilirsiniz:
İsterseniz, * yerine doğrudan bir IP adresi
+ belirtebilirsiniz. Hatta, daha sonra, isme dayalı sanal konakları bir IP
+ adresinden ve IP’ye dayalı olanları veya isme dayalı diğer bir sanal konak
+ grubunu diğer IP adreslerinden sunmak isteyebilirsiniz.
Çoğu sunucunun birden fazla isim ile erişilebilir olması istenir. Bu,
+
Böylece biralan.tld alanındaki tüm konaklar için gelen
+ isteklere www.biralan.tld sanal konağından hizmet sunulmuş
+ olur. Konak isimleriyle eşleşmek üzere dosya ismi kalıp karakterleri
+ * ve ? kullanılabilir. Şüphesiz bu isimleri sırf
+ ServerAlias yönergesinde belirtmiş olmakla bu isimleri
+ erişilebilir kılamazsınız. Öncelikle, bu isimleri sunucunuzdaki IP
+ adresleriyle eşlemek üzere yapılandıracağınız bir DNS sunucunuz
+ olmalıdır.
Son olarak, sanal konak yapılandırmanıza,
Sunucuya bir istek geldiğinde, sunucu önce IP adresiyle eşleşmesi olası
+ ServerAlias yönergesi bulmaya
+ çalışır. Bir tane bulduğunda, sunucu için onun yapılandırmasını kullanır.
+ İsimle eşleşen bir sanal konak bulamazsa IP adresiyle eşleşen ilk
+ sanal konağın yapılandırmasını kullanır.
Bir önkabul olarak yapılandırma dosyasında rastlanan ilk sanal konak
+ öntanımlı sanal konaktır. IP adresi bir sanal konakla eşleştiği
+ takdirde ana sunucunun
Evvelce de bahsedildiği gibi, isme dayalı sanal konakların gerektiği gibi + çalışması için gerekli veriyi göndermeyen bazı istemciler vardır. Bu + istemcilere daima o IP adresinin yapılandırma dosyasındaki ilk sanal + konağının (isme dayalı başat sanal konak) sayfaları + gönderilir.
+ +Lütfen dikkat edin, eski deyince gerçekten de antika demek istiyoruz.
+ Günümüzde bu tür tarayıcılara rastlamanız neredeyse imkansızdır. Günümüz
+ tarayıcılarının hepsi isme dayalı sanal konakların gerektirdiği
+ Host başlığını gönderirler.
Olayı fazla germeden
Örnek yapılandırma:
+ +Bu ne anlama geliyor? Anlamı, "/biralan" ile başlayan her
+ URI isteği www.biralan.tld sanal konağı tarafından sunulacak,
+ demektir. Yani, tüm istemcilerin
+ http://www.biralan.tld/biralan/ olarak eriştiği yere
+ Host: başlığı gönderen istemciler
+ http://www.biralan.tld/ olarak erişirler.
Bunu gerçekleştirebilmek için başat sanal konağın baş sayfasına
+ http://www.biralan.tld/biralan/ için bir bağ koyduktan sonra
+ sanal konağın sayfalarında ya tamamen göreli bağlar
+ ("dosya.html", "../simgeler/resim.png" gibi)
+ veya /biralan/ ile öncelenmiş bağlar
+ ("http://www.biralan.tld/biralan/muht/dosya.html" veya
+ "/biralan/muht/dosya.html" gibi) kullanın.
Bu işlem biraz disiplin gerektirse de bu yazılanlara sıkı sıkıya bağlı + kalarak hem eski hem de yeni tarayıcıların sayfalarınızı doğru + görüntülemesini sağlamış olursunuz.
+ +