1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>Sanal Konak Eşlemenin Derinliğine İncelenmesi - Apache HTTP Sunucusu</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
15 <p class="apache">Apache HTTP Sunucusu Sürüm 2.0</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="../">Sürüm 2.0</a> > <a href="./">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Sanal Konak Eşlemenin Derinliğine İncelenmesi</h1>
21 <p><span>Mevcut Diller: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
23 <a href="../tr/vhosts/details.html" title="Türkçe"> tr </a></p>
27 <p>Sanal konak kodu <strong>Apache 1.3</strong> sürümünde baştan yeniden
28 yazıldı. Bu belgede, bir istek aldığında Apache’nin hangi sanal konak
29 ile hizmet sunacağına nasıl karar verdiği açıklanmaya çalışılmıştır.
30 <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> yönergesi sayesinde
31 sanal konak yapılandırması 1.3 sürümünün öncesine göre daha kolay ve
32 daha güvenilir hale gelmiştir.</p>
34 <p>Sanal konakların nasıl çalıştığını öğrenmeden sadece çalıştırmak
35 isterseniz doğrudan <a href="examples.html">örneklerin bulunduğu
36 sayfaya</a> bakabilirsiniz.</p>
39 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#configparsing">Yapılandırma Dosyasının Çözümlenmesi</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#hostmatching">Sanal Konağın Belirlenmesi</a></li>
41 <li><img alt="" src="../images/down.gif" /> <a href="#tips">İpuçları</a></li>
43 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
45 <h2><a name="configparsing" id="configparsing">Yapılandırma Dosyasının Çözümlenmesi</a></h2>
47 <p>Bu belgede <code><VirtualHost></code> bölümleri dışında kalan
48 tanımlardan bahsederken <em>ana_sunucu</em>, <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code> bölümlerindeki tanımlamalardan
49 bahsederken <em>sankonlar</em> diyeceğiz.</p>
51 <p><code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>,
52 <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>,
53 <code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code> ve
54 <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> yönergeleri bir sunucu
55 yapılandırmasının her yerinde karşımıza çıkabilir. Bununla birlikte,
56 sunucu dahilinde son göründükleri yerlerde önceki eşdeğerlerini geçersiz
59 <p><code>Listen</code> yönergesinin ana_sunucu için öntanımlı değeri
60 80’dir. <code>ServerPath</code> ve <code>ServerAlias</code>
61 yönergelerinin ana_sunucu için öntanımlı değerleri yoktur. Öntanımlı
62 <code>ServerName</code> değeri ise sunucunun IP adresinden elde
65 <p>Ana_sunucu <code>Listen</code> yönergesinin iki işlevi vardır. Biri
66 Apache’nin dinleyeceği öntanımlı ağ portunu belirlemek, diğeri ise
67 yönlendirmeler sırasında mutlak URI’lerde kullanılan port numarasını
70 <p>Ana_sunucunun aksine sankonların portları Apache‘nin dinleyeceği
71 portlar üzerinde etkili değildir.</p>
73 <p><code>VirtualHost</code> yönergesinde görünen her adresin seçimlik bir
74 portu olabilir. Eğer bir port belirtilmemişse öntanımlı olarak
75 ana_sunucunun son <code>Listen</code> yönergesinin değeri kullanılır.
76 Port olarak <code>*</code> belirtildiği takdirde bütün portlar dinlenir.
77 Adreslerin tamamını (DNS sorgularındaki çoklu A kayıtları dahil) içeren
78 kümeye sankonların <em>adres kümesi</em> denir.</p>
80 <p><code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> yönergesi ilk
81 sankonun IP adresi için kullanılmadığı takdirde bu IP adresine sahip ilk
82 sankon IP’ye dayalı sankon olarak ele alınır. IP adresi olarak
83 <code>*</code> belirtmek de mümkündür.</p>
85 <p>Eğer isme dayalı sankonlar kullanılacaksa <code>NameVirtualHost</code>
86 yönergesinin bu isme dayalı sankonların IP adresi kümesini içermesi
87 <em>gerekir</em>. Başka bir deyişle, yapılandırma dosyanızın
88 <code>NameVirtualHost</code> yönergesine sankonların sunucu isimlerinin
89 karşı düştüğü IP adresini yazmalısınız.</p>
91 <p>Çok sayıda <code>NameVirtualHost</code> yönergesi belirtebilirse de her
92 IP:port çifti için birden fazla <code>NameVirtualHost</code> yönergesi
93 belirtilmemelidir.</p>
95 <p>Aşağıdaki iki örneğin eşdeğer olması için <code>NameVirtualHost</code>
96 ve <code>VirtualHost</code> yönergelerinin sıralamasının bir önemi
97 yoktur. (Sadece <em>tek</em> adreslik küme içindeki
98 <code>VirtualHost</code> yönergelerinin sırası önemlidir; aşağıya
102 <td><div class="example"><p><code>
103 NameVirtualHost 111.22.33.44<br />
104 <VirtualHost 111.22.33.44><br />
107 </VirtualHost><br />
108 <VirtualHost 111.22.33.44><br />
111 </VirtualHost><br />
113 NameVirtualHost 111.22.33.55<br />
114 <VirtualHost 111.22.33.55><br />
117 </VirtualHost><br />
118 <VirtualHost 111.22.33.55><br />
122 </code></p></div></td>
123 <td><div class="example"><p><code>
124 <VirtualHost 111.22.33.44><br />
126 </VirtualHost><br />
127 <VirtualHost 111.22.33.55><br />
130 </VirtualHost><br />
131 <VirtualHost 111.22.33.44><br />
134 </VirtualHost><br />
135 <VirtualHost 111.22.33.55><br />
138 </VirtualHost><br />
140 NameVirtualHost 111.22.33.44<br />
141 NameVirtualHost 111.22.33.55<br />
143 </code></p></div></td>
147 <p>(Okuma kolaylığı bakımından soldaki sürümü tercih etmenizi öneririz.)
150 <p><code>VirtualHost</code> yönergesi çözümlendikten sonra sankon
151 sunucusuna yönergedeki ilk isme atanmış portun öntanımlı olduğu bir
152 <code>Listen</code> verilir.</p>
154 <p>Eğer tüm <code>VirtualHost</code> isimlerinin listesi aynı adres
155 kümesine çözümleniyorsa bu isimler birer <code>ServerAlias</code> gibi
156 ele alınırlar (bir <code>ServerAlias</code> yönergesi ile geçersiz
157 kılınmadıkça). Bir sankon tanımından sonra gelen <code>Listen</code>
158 satırlarının o sankonun adres kümesine atanmış portlara bir etkisinin
159 olmayacağına dikkat ediniz.</p>
161 <p>İsim listeleri IP adreslerine göre gruplanır ve bir çiftler tablosuna
162 kaydedilir. Eğer IP adresi bir <code>NameVirtualHost</code> yönergesinde
163 kullanılmışsa, liste bu IP adresi için tanımlanmış tüm sankonları
164 içerir. Eğer bu IP adresinin tanımlandığı bir sankon yoksa o
165 <code>NameVirtualHost</code> yönergesi yoksayılır ve günlüğe bir hata
166 kaydı düşülür. IP’ye dayalı sankonlar için çiftler listesinde isim
169 <p>Çiftler listesini işleyen işlevin hızı nedeniyle bir istek sırasında IP
170 adresine göre gruplama yaparken kaynak harcaması en düşük düzeyde olur
171 hatta neredeyse hiç olmaz. Ek olarak, tablo, IP adresinin son
172 sekizlisindeki değişikliklere göre de en iyilenir.</p>
174 <p>Her sankon için bazı değerler öntanımlı olarak atanır. Bunların
178 <li>Sankon bir <code class="directive"><a href="../mod/core.html#serveradmin">ServerAdmin</a></code>
179 yönergesi içermiyorsa,
180 <code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code>,
181 <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>,
182 <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>,
183 <code class="directive"><a href="../mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></code>,
184 <code class="directive"><a href="../mod/core.html#receivebuffersize">ReceiveBufferSize</a></code> ve
185 <code class="directive"><a href="../mod/core.html#sendbuffersize">SendBufferSize</a></code> yönergeleri için
186 öntanımlı değerler ana_sunucudaki eşdeğerlerinden miras alınır. (Yani,
187 bu yönergeler için ana_sunucudaki son değerler miras alınır.)</li>
189 <li>Sankon için öntanımlı dizin erişim izinlerinin tanımlandığı "arama
190 öntanımlıları" ana_sunucununkilere katılır. Buna her modülün dizinlere
191 özgü yapılandırma bilgileri dahildir.</li>
193 <li>Her modülün ana_sunucudaki sunuculara özgü yapılandırmaları sankon
194 sunucusununkilerle katıştırılır.</li>
197 <p>Esasen, ana_sunucu, sankon sunucularını oluştururken bir öntanımlılar
198 listesi veya öntanımlı değerlere dayanak noktası olarak ele alınır.
199 Fakat bu ana_sunucu tanımlarının yapılandırma dosyasındaki yerlerinin
200 saptanmasının konumuzla ilgisi yoktur; ana_sunucu yapılandırmasının
201 tamamı son katıştırma yapılacağı zaman çözümlenir. Bu bakımdan,
202 ana_sunucu tanımlarından bir kısmı sankon tanımlarından sonra yer alsa
203 bile sankon tanımlarında etkili olabilir.</p>
205 <p>Eğer, bu noktada ana_sunucu hiçbir <code>ServerName</code> satırı
206 içermiyorsa <code class="program"><a href="../programs/httpd.html">httpd</a></code> programının çalıştığı makinenin
207 konak ismi öntanımlıdır. Ana_sunucunun <code>ServerName</code> için
208 yaptığı DNS sorgusundan dönen IP adreslerine <em>ana_sunucu adres
209 kümesi</em> diyoruz.</p>
211 <p>Tanımsız <code>ServerName</code> alanları için bir isme dayalı sankon, sankonu tanımlayan <code>VirtualHost</code> yönergesinde belirtilen ilk adresi öntanımlı değer kabul eder.</p>
213 <p>Sihirli <code>_default_</code> sankonları için ana_sunucunun <code>ServerName</code> değeri kullanılır.</p>
215 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
216 <div class="section">
217 <h2><a name="hostmatching" id="hostmatching">Sanal Konağın Belirlenmesi</a></h2>
219 <p>Sunucu bir istek durumunda hangi sankonun kullanılacağını şöyle
222 <h3><a name="hashtable" id="hashtable">Değer çiftleri tablosu aranır</a></h3>
224 <p>Bir istemci tarafından bağlantı ilk yapıldığında önce IP-isim çiftleri
225 tablosunda istemcinin bağlandığı IP adresi için bir arama yapılır.</p>
227 <p>Arama başarısız olursa (IP adresi yoksa) hizmet, istekte belirtilen
228 port için bir <code>_default_</code> sankon varsa, o sankondan, yoksa
229 ana_sunucudan sunulur.</p>
231 <p>Eğer çiftler tablosunda IP adresi yoksa port numarası ile eşleştirme
232 çabası ayrıca, diğer isme dayalı sanal konaklardaki gibi ard arda ele
233 alınmayı gerektiren <code>NameVirtualHost *</code> durumundaki bir
234 girdiyle sonuçlanabilir.</p>
236 <p>Arama sonucunda tabloda IP adresi bulunursa sonraki adım hizmetin bir
237 IP’ye dayalı sankondan mı yoksa isme dayalı bir sankondan mı
238 sunulacağına karar vermektir.</p>
242 <h3><a name="ipbased" id="ipbased">IP’ye dayalı sankon</a></h3>
244 <p>Eğer tabloda bulduğumuz girdinin isim alanları boşsa bir IP’ye dayalı
245 sanal konak bulmuşuz demektir. Artık karar vermek için başka bir şey
246 yapmaya gerek yoktur ve istek bu sankondan sunulur.</p>
250 <h3><a name="namebased" id="namebased">İsme dayalı sankon</a></h3>
252 <p>Tabloda bulduğumuz girdi için bir isim listesi varsa bir isme dayalı
253 sankon sözkonusudur. Bu isim listesi, sankonları, ilgili
254 <code>VirtualHost</code> bölümlerinin yapılandırma dosyasında yer alış
255 sırasına göre içerir.</p>
257 <p>Bu listedeki ilk sankon (yapılandırma dosyasında belirtilen IP adresine
258 sahip ilk sankon) en yüksek önceliğe sahiptir ve sunucu ismi
259 belirtilmeyen veya <code>Host:</code> başlık alanı olmayan istekleri bu
262 <p>Eğer istemci bir <code>Host:</code> başlık alanı ile istek yapmışsa
263 liste bu sankon için aranır ve hizmet <code>ServerName</code> veya
264 <code>ServerAlias</code> ile ilk eşleşmenin sağlandığı sankondan
265 sunulur. <code>Host:</code> alanında bir port belirtilebilirse de Apache
266 daima istemcinin isteği gönderdiği portu gerçek port kabul eder.</p>
268 <p>Eğer istemci <code>Host:</code> başlık alanı bulunmayan bir HTTP/1.0
269 isteği yapmışsa istemcinin hangi sankona bağlanmayı denediğini bilemeyiz
270 ve istekteki URI ile mevcut <code>ServerPath</code> değerini
271 eşleştirmeye çalışırız. Listedekilerden ilk eşleşen yola sahip sankondan
274 <p>İstekle eşleşen bir sankon bulunamazsa IP listesinde istemcinin
275 bağlandığı portla eşleşen ilk sankondan hizmeti sunarız.</p>
279 <h3><a name="persistent" id="persistent">Kalıcı bağlantılar</a></h3>
281 <p>Yukarıda açıklanan IP araması belli bir TCP/IP oturumunda bir defaya
282 mahsus yapıldığı halde bir kalıcı/KeepAlive bağlantı sırasında her istek
283 için ayrı bir arama yapılır. Başka bir deyişle, bir istemci tek bir
284 kalıcı bağlantı üzerinde farklı isme dayalı sankonlardan sayfa talebinde
289 <h3><a name="absoluteURI" id="absoluteURI">Mutlak URI</a></h3>
291 <p>Eğer istekte belirtilen URI bir mutlak URI ise ve istek yapılan konak
292 ismi ve port ana sunucuyla veya sankonlardan biriyle eşleşiyorsa,
293 şema/konakadı/port öneki ayrılır ve elde edilen göreli URI ilgili
294 sankondan veya ana sunucudan sunulur. Eğer bir eşleşme sağlanamazsa
295 URI’ye dokunulmaz ve istek bir vekil isteği olarak ele alınır.</p>
298 <h3><a name="observations" id="observations">İzlenimler</a></h3>
301 <li>Bir isme dayalı sankon asla bir IP’ye dayalı sankon ile (veya tersi)
302 etkileşime girmez. IP’ye dayalı sankonlara sadece kendi adres
303 kümesindeki bir IP adresi üzerinden erişilebilir, asla başka bir
304 adresten erişilemez. Aynısı isme dayalı sankonlara da uygulanır;
305 onlara sadece bir <code>NameVirtualHost</code> yönergesi ile
306 tanımlanmış adres kümesindeki bir IP adresi üzerinden
309 <li>Bir IP’ye dayalı sankon için asla <code>ServerAlias</code> ve
310 <code>ServerPath</code> değerine bakılmaz.</li>
312 <li>Yapılandırma dosyası içinde isme/IP’ye dayalı ve
313 <code>_default_</code> sankonlar ile <code>NameVirtualHost</code>
314 yönergelerinin yer alış sırasının birbirlerine göre bir önemi yoktur.
315 Sıralama sadece aynı IP adresine sahip isme dayalı sankonlar arasında
316 önemlidir. Aynı adres kümesine mensup isme dayalı sankonlardan
317 yapılandırma dosyasında ilk sırada yer alanı en yüksek önceliğe
320 <li>Güvenlik saikiyle, eşleştirme işlemi sırasında <code>Host:</code>
321 başlık alanında belirtilen port asla kullanılmaz. Apache daima
322 istemcinin bağlantı kurduğu gerçek portu kullanır.</li>
324 <li>Değeri başka bir <code>ServerPath</code> yönergesinin değeri için
325 önek olan bir <code>ServerPath</code> yönergesi yapılandırma
326 dosyasında daha önce yer alıyorsa sonrakiyle eşleşme asla
327 gerçekleşmez. (Bu belirsizliği giderecek bir <code>Host:</code> başlık
328 alanının mümkün olmadığı varsayılır.)</li>
330 <li>Eğer tek bir IP adresine sahip IP’ye dayalı iki sankon varsa eşleşme
331 daima yapılandırma dosyasında ilk yer alanla gerçekleşir. Böyle bir
332 şey kasten yapılmaz. Sunucu böyle bir durumu saptadığında hata
333 günlüğünde bir uyarı verecektir.</li>
335 <li>Bir <code>_default_</code> sankon sadece istekle eşleşen bir IP
336 adresi bulunamadığında port numarası eşleştiği takdirde isteğe hizmet
337 sunabilir. Port düzeyinde eşleşmenin olabilmesi için isteğin geldiği
338 port ile sankon için belirtilen port eşleşmelidir. Olası tüm portlarla
339 eşleşmeyi sağlamak üzere yıldız imi (<code>_default_:*</code>
340 şeklinde) kullanılabilir. Aynı şey <code>NameVirtualHost *</code>
341 sankonlarına da uygulanır.</li>
343 <li>Ana_sunucunun bir isteğe hizmet sunabilmesi için istemcinin
344 bağlandığı IP adresi ve port hiçbir yerde belirtilmemiş ve
345 <code>_default_</code> dahil hiçbir sankon ile eşleşme sağlanamamış
346 olmalıdır. Başka bir deyişle, istemcinin bağlandığı port ile eşleşen
347 bir <code>_default_</code> sankon olmadıkça adres ve port belirtmeyen
348 bir isteğe ana_sunucu yanıt verecektir.</li>
350 <li><code>Host:</code> başlık alanı içermeyen veya hedefi bilinmeyen bir
351 istek geldiği takdirde, eğer bu istemcinin bağlandığı adres ve port
352 için (örneğin, <code>NameVirtualHost</code> ile) tanımlanmış bir isme
353 dayalı sankon varsa bu isteğe ne ana_sunucu ne de bir
354 <code>_default_</code> sankon hizmet sunabilir.</li>
356 <li><code>VirtualHost</code> yönergelerinde asla DNS isimleri
357 belirtmemelisiniz. Aksi takdirde sunucuyu başlatma sırasında DNS
358 sorgusu yapmaya zorlamış olursunuz. Listelenen tüm alanlar için DNS
359 üzerinde tam denetime sahip değilseniz bu ayrıca bir güvenlik
360 tehdidine yol açar. Bu konuda daha ayrıntılı bilgi edinmek için <a href="../dns-caveats.html">DNS ile ilgili konular ve Apache</a>
361 belgesine bakınız.</li>
363 <li><code>ServerName</code> her sankon için ayrı ayrı belirlenmiş
364 olmalıdır. Aksi takdirde her sankon için bir DNS sorgusu gerekir.</li>
368 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
369 <div class="section">
370 <h2><a name="tips" id="tips">İpuçları</a></h2>
372 <p><a href="../dns-caveats.html#tips">DNS konuları</a> sayfasındaki
373 ipuçlarına ilaveten burada da bazı ipuçları bulacaksınız:</p>
376 <li>Ana_sunucu tanımlarının hepsini <code>VirtualHost</code>
377 tanımlarının öncesinde bitirin. Bu ayrıca yapılandırmanızın
378 okunabilirliğini de arttırır; <code>VirtualHost</code> tanımlarının
379 sonrasına sarkan yapılandırmaların katıştırılması işlemi tüm sanal
380 konakları etkileyebilen tanımlar bakımından bir
381 karışıklığa/belirsizliğe sebep olabilir.)</li>
383 <li>Birbirleriyle ilgili <code>NameVirtualHost</code> ve
384 <code>VirtualHost</code> tanımlarını okunabilirliği arttırmak için
387 <li>Değeri başka bir <code>ServerPath</code> için önek olan tanımlamalar
388 yapmaktan kaçının. Bundan kaçınamıyorsanız, yolu uzun olanı yolu kısa
389 olanın öncesine yerleştirin. Örneğin, "ServerPath /abc/def" önce
390 "ServerPath /abc" sonra yer alsın.</li>
394 <div class="bottomlang">
395 <p><span>Mevcut Diller: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English"> en </a> |
396 <a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
397 <a href="../tr/vhosts/details.html" title="Türkçe"> tr </a></p>
398 </div><div id="footer">
399 <p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
400 <p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>