]> granicus.if.org Git - apache/blob - docs/manual/vhosts/details.xml.tr
Rebuild
[apache] / docs / manual / vhosts / details.xml.tr
1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
4 <!-- English Revision: 420990:1301735 (outdated) -->
5 <!-- =====================================================
6  Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7    Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
9
10 <!--
11  Licensed to the Apache Software Foundation (ASF) under one or more
12  contributor license agreements.  See the NOTICE file distributed with
13  this work for additional information regarding copyright ownership.
14  The ASF licenses this file to You under the Apache License, Version 2.0
15  (the "License"); you may not use this file except in compliance with
16  the License.  You may obtain a copy of the License at
17
18      http://www.apache.org/licenses/LICENSE-2.0
19
20  Unless required by applicable law or agreed to in writing, software
21  distributed under the License is distributed on an "AS IS" BASIS,
22  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23  See the License for the specific language governing permissions and
24  limitations under the License.
25 -->
26
27 <manualpage metafile="details.xml.meta">
28 <parentdocument href="./">Sanal Konaklar</parentdocument>
29    <title>Sanal Konak Eşlemenin Derinliğine İncelenmesi</title>
30
31 <summary>
32
33     <p>Sanal konak kodu <strong>Apache 1.3</strong> sürümünde baştan yeniden
34       yazıldı. Bu belgede, bir istek aldığında Apache’nin hangi sanal konak
35       ile hizmet sunacağına nasıl karar verdiği açıklanmaya çalışılmıştır.
36       <directive module="core">NameVirtualHost</directive> yönergesi sayesinde
37       sanal konak yapılandırması 1.3 sürümünün öncesine göre daha kolay ve
38       daha güvenilir hale gelmiştir.</p>
39
40     <p>Sanal konakların nasıl çalıştığını öğrenmeden sadece çalıştırmak
41       isterseniz doğrudan <a href="examples.html">örneklerin bulunduğu
42       sayfaya</a> bakabilirsiniz.</p>
43
44 </summary>
45
46 <section id="configparsing"><title>Yapılandırma Dosyasının Çözümlenmesi</title>
47
48     <p>Bu belgede <code>&lt;VirtualHost&gt;</code> bölümleri dışında kalan
49       tanımlardan bahsederken <em>ana_sunucu</em>, <directive type="section"
50       module="core">VirtualHost</directive> bölümlerindeki tanımlamalardan
51       bahsederken <em>sankonlar</em> diyeceğiz.</p>
52
53     <p><directive module="mpm_common">Listen</directive>,
54       <directive module="core">ServerName</directive>,
55       <directive module="core">ServerPath</directive> ve
56       <directive module="core">ServerAlias</directive> yönergeleri bir sunucu
57       yapılandırmasının her yerinde karşımıza çıkabilir. Bununla birlikte,
58       sunucu dahilinde son göründükleri yerlerde önceki eşdeğerlerini geçersiz
59       kılarlar.</p>
60
61     <p><code>Listen</code> yönergesinin ana_sunucu için öntanımlı değeri
62       80’dir. <code>ServerPath</code> ve <code>ServerAlias</code>
63       yönergelerinin ana_sunucu için öntanımlı değerleri yoktur. Öntanımlı
64       <code>ServerName</code> değeri ise sunucunun IP adresinden elde
65       edilir.</p>
66
67     <p>Ana_sunucu <code>Listen</code> yönergesinin iki işlevi vardır. Biri
68       Apache’nin dinleyeceği öntanımlı ağ portunu belirlemek, diğeri ise
69       yönlendirmeler sırasında mutlak URI’lerde kullanılan port numarasını
70       belirlemektir.</p>
71
72     <p>Ana_sunucunun aksine sankonların portları Apache‘nin dinleyeceği
73       portlar üzerinde etkili değildir.</p>
74
75     <p><code>VirtualHost</code> yönergesinde görünen her adresin seçimlik bir
76       portu olabilir. Eğer bir port belirtilmemişse öntanımlı olarak
77       ana_sunucunun son <code>Listen</code> yönergesinin değeri kullanılır.
78       Port olarak <code>*</code> belirtildiği takdirde bütün portlar dinlenir.
79       Adreslerin tamamını (DNS sorgularındaki çoklu A kayıtları dahil) içeren
80       kümeye sankonların <em>adres kümesi</em> denir.</p>
81
82     <p><directive module="core">NameVirtualHost</directive> yönergesi ilk
83       sankonun IP adresi için kullanılmadığı takdirde bu IP adresine sahip ilk
84       sankon IP’ye dayalı sankon olarak ele alınır. IP adresi olarak
85       <code>*</code> belirtmek de mümkündür.</p>
86
87     <p>Eğer isme dayalı sankonlar kullanılacaksa <code>NameVirtualHost</code>
88       yönergesinin bu isme dayalı sankonların IP adresi kümesini içermesi
89       <em>gerekir</em>. Başka bir deyişle, yapılandırma dosyanızın
90       <code>NameVirtualHost</code> yönergesine sankonların sunucu isimlerinin
91       karşı düştüğü IP adresini yazmalısınız.</p>
92
93     <p>Çok sayıda <code>NameVirtualHost</code> yönergesi belirtebilirse de her
94       IP:port çifti için birden fazla <code>NameVirtualHost</code> yönergesi
95       belirtilmemelidir.</p>
96
97     <p>Aşağıdaki iki örneğin eşdeğer olması için <code>NameVirtualHost</code>
98       ve <code>VirtualHost</code> yönergelerinin sıralamasının bir önemi
99       yoktur. (Sadece <em>tek</em> adreslik küme içindeki
100       <code>VirtualHost</code> yönergelerinin sırası önemlidir; aşağıya
101       bakınız:)</p>
102
103 <table><tr>
104 <td><example>
105   NameVirtualHost 111.22.33.44<br />
106   &lt;VirtualHost 111.22.33.44&gt;<br />
107   # sunucu A<br />
108   ...<br />
109   &lt;/VirtualHost&gt;<br />
110   &lt;VirtualHost 111.22.33.44&gt;<br />
111   # sunucu B<br />
112   ...<br />
113   &lt;/VirtualHost&gt;<br />
114   <br />
115   NameVirtualHost 111.22.33.55<br />
116   &lt;VirtualHost 111.22.33.55&gt;<br />
117   # sunucu C<br />
118   ...<br />
119   &lt;/VirtualHost&gt;<br />
120   &lt;VirtualHost 111.22.33.55&gt;<br />
121   # sunucu D<br />
122   ...<br />
123   &lt;/VirtualHost&gt;
124 </example></td>
125 <td><example>
126   &lt;VirtualHost 111.22.33.44&gt;<br />
127   # sunucu A<br />
128   &lt;/VirtualHost&gt;<br />
129   &lt;VirtualHost 111.22.33.55&gt;<br />
130   # sunucu C<br />
131   ...<br />
132   &lt;/VirtualHost&gt;<br />
133   &lt;VirtualHost 111.22.33.44&gt;<br />
134   # sunucu B<br />
135   ...<br />
136   &lt;/VirtualHost&gt;<br />
137   &lt;VirtualHost 111.22.33.55&gt;<br />
138   # sunucu D<br />
139   ...<br />
140   &lt;/VirtualHost&gt;<br />
141   <br />
142   NameVirtualHost 111.22.33.44<br />
143   NameVirtualHost 111.22.33.55<br />
144   <br />
145 </example></td>
146 </tr></table>
147
148
149     <p>(Okuma kolaylığı bakımından soldaki sürümü tercih etmenizi öneririz.)
150     </p>
151
152     <p><code>VirtualHost</code> yönergesi çözümlendikten sonra sankon
153       sunucusuna yönergedeki ilk isme atanmış portun öntanımlı olduğu bir
154       <code>Listen</code> verilir.</p>
155
156     <p>Eğer tüm <code>VirtualHost</code> isimlerinin listesi aynı adres
157       kümesine çözümleniyorsa bu isimler birer <code>ServerAlias</code> gibi
158       ele alınırlar (bir <code>ServerAlias</code> yönergesi ile geçersiz
159       kılınmadıkça). Bir sankon tanımından sonra gelen <code>Listen</code>
160       satırlarının o sankonun adres kümesine atanmış portlara bir etkisinin
161       olmayacağına dikkat ediniz.</p>
162
163     <p>İsim listeleri IP adreslerine göre gruplanır ve bir çiftler tablosuna
164       kaydedilir. Eğer IP adresi bir <code>NameVirtualHost</code> yönergesinde
165       kullanılmışsa, liste bu IP adresi için tanımlanmış tüm sankonları
166       içerir. Eğer bu IP adresinin tanımlandığı bir sankon yoksa o
167       <code>NameVirtualHost</code> yönergesi yoksayılır ve günlüğe bir hata
168       kaydı düşülür. IP’ye dayalı sankonlar için çiftler listesinde isim
169       alanları boştur.</p>
170
171     <p>Çiftler listesini işleyen işlevin hızı nedeniyle bir istek sırasında IP
172       adresine göre gruplama yaparken kaynak harcaması en düşük düzeyde olur
173       hatta neredeyse hiç olmaz. Ek olarak, tablo, IP adresinin son
174       sekizlisindeki değişikliklere göre de en iyilenir.</p>
175
176     <p>Her sankon için bazı değerler öntanımlı olarak atanır. Bunların
177       başlıcaları:</p>
178
179     <ol>
180       <li>Sankon bir <directive module="core">ServerAdmin</directive>
181         yönergesi içermiyorsa,
182         <directive module="core">ResourceConfig</directive>,
183         <directive module="core">AccessConfig</directive>,
184         <directive module="core">Timeout</directive>,
185         <directive module="core">KeepAliveTimeout</directive>,
186         <directive module="core">KeepAlive</directive>,
187         <directive module="core">MaxKeepAliveRequests</directive>,
188         <directive module="core">ReceiveBufferSize</directive> ve
189         <directive module="core">SendBufferSize</directive> yönergeleri için
190         öntanımlı değerler ana_sunucudaki eşdeğerlerinden miras alınır. (Yani,
191         bu yönergeler için ana_sunucudaki son değerler miras alınır.)</li>
192
193       <li>Sankon için öntanımlı dizin erişim izinlerinin tanımlandığı "arama
194         öntanımlıları" ana_sunucununkilere katılır. Buna her modülün dizinlere
195         özgü yapılandırma bilgileri dahildir.</li>
196
197       <li>Her modülün ana_sunucudaki sunuculara özgü yapılandırmaları sankon
198         sunucusununkilerle katıştırılır.</li>
199     </ol>
200
201     <p>Esasen, ana_sunucu, sankon sunucularını oluştururken bir öntanımlılar
202       listesi veya öntanımlı değerlere dayanak noktası olarak ele alınır.
203       Fakat bu ana_sunucu tanımlarının yapılandırma dosyasındaki yerlerinin
204       saptanmasının konumuzla ilgisi yoktur; ana_sunucu yapılandırmasının
205       tamamı son katıştırma yapılacağı zaman çözümlenir. Bu bakımdan,
206       ana_sunucu tanımlarından bir kısmı sankon tanımlarından sonra yer alsa
207       bile sankon tanımlarında etkili olabilir.</p>
208
209     <p>Eğer, bu noktada ana_sunucu hiçbir <code>ServerName</code> satırı
210       içermiyorsa <program>httpd</program> programının çalıştığı makinenin
211       konak ismi öntanımlıdır. Ana_sunucunun <code>ServerName</code> için
212       yaptığı DNS sorgusundan dönen IP adreslerine <em>ana_sunucu adres
213       kümesi</em> diyoruz.</p>
214
215     <p>Tanımsız <code>ServerName</code> alanları için bir isme dayalı sankon,
216       sankonu tanımlayan <code>VirtualHost</code> yönergesinde belirtilen ilk
217       adresi öntanımlı değer kabul eder.</p>
218
219     <p>Sihirli <code>_default_</code> sankonları için ana_sunucunun
220       <code>ServerName</code> değeri kullanılır.</p>
221
222 </section>
223
224 <section id="hostmatching"><title>Sanal Konağın Belirlenmesi</title>
225
226     <p>Sunucu bir istek durumunda hangi sankonun kullanılacağını şöyle
227       belirler:</p>
228
229     <section id="hashtable"><title>Değer çiftleri tablosu aranır</title>
230
231     <p>Bir istemci tarafından bağlantı ilk yapıldığında önce IP-isim çiftleri
232       tablosunda istemcinin bağlandığı IP adresi için bir arama yapılır.</p>
233
234     <p>Arama başarısız olursa (IP adresi yoksa) hizmet, istekte belirtilen
235       port için bir <code>_default_</code> sankon varsa, o sankondan, yoksa
236       ana_sunucudan sunulur.</p>
237
238     <p>Eğer çiftler tablosunda IP adresi yoksa port numarası ile eşleştirme
239       çabası ayrıca, diğer isme dayalı sanal konaklardaki gibi ard arda ele
240       alınmayı gerektiren <code>NameVirtualHost *</code> durumundaki bir
241       girdiyle sonuçlanabilir.</p>
242
243     <p>Arama sonucunda tabloda IP adresi bulunursa sonraki adım hizmetin bir
244       IP’ye dayalı sankondan mı yoksa isme dayalı bir sankondan mı
245       sunulacağına karar vermektir.</p>
246
247     </section>
248
249     <section id="ipbased"><title>IP’ye dayalı sankon</title>
250
251     <p>Eğer tabloda bulduğumuz girdinin isim alanları boşsa bir IP’ye dayalı
252       sanal konak bulmuşuz demektir. Artık karar vermek için başka bir şey
253       yapmaya gerek yoktur ve istek bu sankondan sunulur.</p>
254
255     </section>
256
257     <section id="namebased"><title>İsme dayalı sankon</title>
258
259     <p>Tabloda bulduğumuz girdi için bir isim listesi varsa bir isme dayalı
260       sankon sözkonusudur. Bu isim listesi, sankonları, ilgili
261       <code>VirtualHost</code> bölümlerinin yapılandırma dosyasında yer alış
262       sırasına göre içerir.</p>
263
264     <p>Bu listedeki ilk sankon (yapılandırma dosyasında belirtilen IP adresine
265       sahip ilk sankon) en yüksek önceliğe sahiptir ve sunucu ismi
266       belirtilmeyen veya <code>Host:</code> başlık alanı olmayan istekleri bu
267       sankon karşılar.</p>
268
269     <p>Eğer istemci bir <code>Host:</code> başlık alanı ile istek yapmışsa
270       liste bu sankon için aranır ve hizmet <code>ServerName</code> veya
271       <code>ServerAlias</code> ile ilk eşleşmenin sağlandığı sankondan
272       sunulur. <code>Host:</code> alanında bir port belirtilebilirse de Apache
273       daima istemcinin isteği gönderdiği portu gerçek port kabul eder.</p>
274
275     <p>Eğer istemci <code>Host:</code> başlık alanı bulunmayan bir HTTP/1.0
276       isteği yapmışsa istemcinin hangi sankona bağlanmayı denediğini bilemeyiz
277       ve istekteki URI ile mevcut <code>ServerPath</code> değerini
278       eşleştirmeye çalışırız. Listedekilerden ilk eşleşen yola sahip sankondan
279       hizmeti sunarız.</p>
280
281     <p>İstekle eşleşen bir sankon bulunamazsa IP listesinde istemcinin
282       bağlandığı portla eşleşen ilk sankondan hizmeti sunarız.</p>
283
284     </section>
285
286     <section id="persistent"><title>Kalıcı bağlantılar</title>
287
288     <p>Yukarıda açıklanan IP araması belli bir TCP/IP oturumunda bir defaya
289       mahsus yapıldığı halde bir kalıcı/KeepAlive bağlantı sırasında her istek
290       için ayrı bir arama yapılır. Başka bir deyişle, bir istemci tek bir
291       kalıcı bağlantı üzerinde farklı isme dayalı sankonlardan sayfa talebinde
292       bulunabilir.</p>
293
294     </section>
295
296     <section id="absoluteURI"><title>Mutlak URI</title>
297
298     <p>Eğer istekte belirtilen URI bir mutlak URI ise ve istek yapılan konak
299       ismi ve port ana sunucuyla veya sankonlardan biriyle eşleşiyorsa,
300       şema/konakadı/port öneki ayrılır ve elde edilen göreli URI ilgili
301       sankondan veya ana sunucudan sunulur. Eğer bir eşleşme sağlanamazsa
302       URI’ye dokunulmaz ve istek bir vekil isteği olarak ele alınır.</p>
303 </section>
304
305 <section id="observations"><title>İzlenimler</title>
306
307     <ul>
308       <li>Bir isme dayalı sankon asla bir IP’ye dayalı sankon ile (veya tersi)
309         etkileşime girmez. IP’ye dayalı sankonlara sadece kendi adres
310         kümesindeki bir IP adresi üzerinden erişilebilir, asla başka bir
311         adresten erişilemez. Aynısı isme dayalı sankonlara da uygulanır;
312         onlara sadece bir <code>NameVirtualHost</code> yönergesi ile
313         tanımlanmış adres kümesindeki bir IP adresi üzerinden
314         erişilebilir.</li>
315
316       <li>Bir IP’ye dayalı sankon için asla <code>ServerAlias</code> ve
317         <code>ServerPath</code> değerine bakılmaz.</li>
318
319       <li>Yapılandırma dosyası içinde isme/IP’ye dayalı ve
320         <code>_default_</code> sankonlar ile <code>NameVirtualHost</code>
321         yönergelerinin yer alış sırasının birbirlerine göre bir önemi yoktur.
322         Sıralama sadece aynı IP adresine sahip isme dayalı sankonlar arasında
323         önemlidir. Aynı adres kümesine mensup isme dayalı sankonlardan
324         yapılandırma dosyasında ilk sırada yer alanı en yüksek önceliğe
325         sahiptir.</li>
326
327       <li>Güvenlik saikiyle, eşleştirme işlemi sırasında <code>Host:</code>
328         başlık alanında belirtilen port asla kullanılmaz. Apache daima
329         istemcinin bağlantı kurduğu gerçek portu kullanır.</li>
330
331       <li>Değeri başka bir <code>ServerPath</code> yönergesinin değeri için
332         önek olan bir <code>ServerPath</code> yönergesi yapılandırma
333         dosyasında daha önce yer alıyorsa sonrakiyle eşleşme asla
334         gerçekleşmez. (Bu belirsizliği giderecek bir <code>Host:</code> başlık
335         alanının mümkün olmadığı varsayılır.)</li>
336
337       <li>Eğer tek bir IP adresine sahip IP’ye dayalı iki sankon varsa eşleşme
338         daima yapılandırma dosyasında ilk yer alanla gerçekleşir. Böyle bir
339         şey kasten yapılmaz. Sunucu böyle bir durumu saptadığında hata
340         günlüğünde bir uyarı verecektir.</li>
341
342       <li>Bir <code>_default_</code> sankon sadece istekle eşleşen bir IP
343         adresi bulunamadığında port numarası eşleştiği takdirde isteğe hizmet
344         sunabilir. Port düzeyinde eşleşmenin olabilmesi için isteğin geldiği
345         port ile sankon için belirtilen port eşleşmelidir. Olası tüm portlarla
346         eşleşmeyi sağlamak üzere yıldız imi (<code>_default_:*</code>
347         şeklinde) kullanılabilir. Aynı şey <code>NameVirtualHost *</code>
348         sankonlarına da uygulanır.</li>
349
350       <li>Ana_sunucunun bir isteğe hizmet sunabilmesi için istemcinin
351         bağlandığı IP adresi ve port hiçbir yerde belirtilmemiş ve
352         <code>_default_</code> dahil hiçbir sankon ile eşleşme sağlanamamış
353         olmalıdır. Başka bir deyişle, istemcinin bağlandığı port ile eşleşen
354         bir <code>_default_</code> sankon olmadıkça adres ve port belirtmeyen
355         bir isteğe ana_sunucu yanıt verecektir.</li>
356
357       <li><code>Host:</code> başlık alanı içermeyen veya hedefi bilinmeyen bir
358         istek geldiği takdirde, eğer bu istemcinin bağlandığı adres ve port
359         için (örneğin, <code>NameVirtualHost</code> ile) tanımlanmış bir isme
360         dayalı sankon varsa bu isteğe ne ana_sunucu ne de bir
361         <code>_default_</code> sankon hizmet sunabilir.</li>
362
363       <li><code>VirtualHost</code> yönergelerinde asla DNS isimleri
364         belirtmemelisiniz. Aksi takdirde sunucuyu başlatma sırasında DNS
365         sorgusu yapmaya zorlamış olursunuz. Listelenen tüm alanlar için DNS
366         üzerinde tam denetime sahip değilseniz bu ayrıca bir güvenlik
367         tehdidine yol açar. Bu konuda daha ayrıntılı bilgi edinmek için <a
368         href="../dns-caveats.html">DNS ile ilgili konular ve Apache</a>
369         belgesine bakınız.</li>
370
371       <li><code>ServerName</code> her sankon için ayrı ayrı belirlenmiş
372         olmalıdır. Aksi takdirde her sankon için bir DNS sorgusu gerekir.</li>
373       </ul>
374       </section>
375
376 </section>
377
378 <section id="tips"><title>İpuçları</title>
379
380     <p><a href="../dns-caveats.html#tips">DNS konuları</a> sayfasındaki
381       ipuçlarına ilaveten burada da bazı ipuçları bulacaksınız:</p>
382
383     <ul>
384       <li>Ana_sunucu tanımlarının hepsini <code>VirtualHost</code>
385         tanımlarının öncesinde bitirin. Bu ayrıca yapılandırmanızın
386         okunabilirliğini de arttırır; <code>VirtualHost</code> tanımlarının
387         sonrasına sarkan yapılandırmaların katıştırılması işlemi tüm sanal
388         konakları etkileyebilen tanımlar bakımından bir
389         karışıklığa/belirsizliğe sebep olabilir.)</li>
390
391       <li>Birbirleriyle ilgili <code>NameVirtualHost</code> ve
392         <code>VirtualHost</code> tanımlarını okunabilirliği arttırmak için
393         gruplayın.</li>
394
395       <li>Değeri başka bir <code>ServerPath</code> için önek olan tanımlamalar
396         yapmaktan kaçının. Bundan kaçınamıyorsanız, yolu uzun olanı yolu kısa
397         olanın öncesine yerleştirin. Örneğin, "ServerPath /abc/def" önce
398         "ServerPath /abc" sonra yer alsın.</li>
399     </ul>
400
401 </section>
402 </manualpage>
403