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: 1301735:1344666 (outdated) -->
5 <!-- =====================================================
6 Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7 Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
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
18 http://www.apache.org/licenses/LICENSE-2.0
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.
27 <manualpage metafile="details.xml.meta">
28 <parentdocument href="./">Sanal Konaklar</parentdocument>
29 <title>Sanal Konak Eşlemenin Derinliğine İncelenmesi</title>
33 <p>Bu belgede, bir istek aldığında Apache’nin hangi sanal konak
34 ile hizmet sunacağına nasıl karar verdiği açıklanmaya çalışılmıştır.</p>
36 <p>Çoğu kullanıcı hangi türü kullanacağına karar vermek için önce <a
37 href="name-based.html#namevip">İsme dayalı ve IP’ye dayalı Sanal
38 Konak</a> bölümünü, sonra <a href="name-based.html">İsme Dayalı Sanal
39 Konak Desteği</a> veya <a href="ip-based.html">IP’ye Dayalı Sanal Konak
40 Desteği</a> belgesini okumalı ve <a href="examples.html">bazı
41 örneklere</a> göz atmalıdır.</p>
43 <p>Bunlardan sonra tüm ayrıntıları anlamak isterseniz tekrar bu sayfaya
48 <seealso><a href="ip-based.html">IP’ye Dayalı Sanal Konak Desteği</a></seealso>
49 <seealso><a href="name-based.html">İsme Dayalı Sanal Konak Desteği</a></seealso>
50 <seealso><a href="examples.html">Çok Kullanılan Sanal Konak Örnekleri</a></seealso>
51 <seealso><a href="mass.html">Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma</a></seealso>
53 <section id="configparsing"><title>Yapılandırma Dosyası</title>
55 <p>Bu belgede <code><VirtualHost></code> bölümleri dışında kalan
56 tanımlardan bahsederken <em>ana_sunucu</em> diyeceğiz.</p>
58 <p><directive type="section" module="core">VirtualHost</directive>
59 bölümlerindeki tanımlamalardan bahsederken <em>sankonlar</em>
62 <p>Her <code>VirtualHost</code> bölümü en az bir adres ve isteğe bağlı
65 <p>Sanal konak tanımlarının içindeki IP adreslerinin yerine konak isimleri
66 kullanılabilir, fakat bunlar başlatma sırasında çözümleneceklerinden
67 çözümlemedeki bir başarısızlık bu sanal konak tanımlarının yoksayılması
68 ile sonuçlanacaktır. Bu bakımdan önerilmez.</p>
70 <p><code>VirtualHost</code> yönergesinde görünen her adresin seçimlik bir
71 portu olabilir. Eğer bir port belirtilmemişse, port olarak <code>*</code>
72 belirtilmiş gibi bütün portlar dinlenir.</p>
74 <p>(<code>VirtualHost</code> yönergesinde belirtilen port numaraları Apache
75 httpd'nin dinleyeceği port numaraları olarak yorumlanmaz, sadece bir
76 isteği işleme sokarken hangi <code>VirtualHost</code> bölümünün
77 seçileceğini belirlerler. Sunucunun dinleyeceği adresleri ve portları
78 belirtmek için <directive module="mpm_common">Listen</directive>
79 yönergesini kullanın.)</p>
81 <p>Adreslerin tamamını (DNS sorgularındaki çoklu sonuçlar dahil) içeren
82 kümeye <em>sankonların adres kümesi</em> denir.</p>
84 <p>Apache httpd, bir IP adresi ve port birleşimi için en belirgin
85 eşleşmelerin listelendiği çok sayıdaki sanal konak arasında ayırdedici
86 olarak istemci tarafından sağlanan HTTP <code>Host</code> başlığını
89 <p><directive module="core">ServerName</directive> yönergesi sunucu
90 tanımının içinde herhangi bir yerde görünebilirse de her göründüğü yerde
91 bir öncekini iptal eder. Hiç <code>ServerName</code> belirtilmemişse,
92 Apache httpd, sunucu ismini sunucunun IP adresinden saptamaya
95 <p>Belli bir IP adresi ve port çifti için yapılandırma dosyasındaki ilk
96 isme dayalı sankon önemlidir, çünkü başka hiçbir sankonun ServerName veya
97 ServerAlias yönergesi ile eşleşmeyen bu adres ve port çifti için alınmış
98 tüm isteklerde bu sankon kullanılır. Ayrıca, sunucunun <glossary
99 ref="servernameindication">Sunucu İsmi Belirtimi</glossary>ni
100 desteklemediği durumlarda tüm SSL bağlantıları için bu sankon
103 <p>Her sankon için bazı değerler öntanımlı olarak atanır. Bunların
107 <li>Sankon bir <directive module="core">ServerAdmin</directive>
108 yönergesi içermiyorsa,
109 <directive module="core">Timeout</directive>,
110 <directive module="core">KeepAliveTimeout</directive>,
111 <directive module="core">KeepAlive</directive>,
112 <directive module="core">MaxKeepAliveRequests</directive>,
113 <directive module="mpm_common">ReceiveBufferSize</directive> ve
114 <directive module="mpm_common">SendBufferSize</directive> yönergeleri için
115 öntanımlı değerler ana_sunucudaki eşdeğerlerinden miras alınır. (Yani,
116 bu yönergeler için ana_sunucudaki son değerler miras alınır.)</li>
118 <li>Sankon için öntanımlı dizin erişim izinlerinin tanımlandığı "arama
119 öntanımlıları" ana_sunucununkilere katılır. Buna her modülün dizinlere
120 özgü yapılandırma bilgileri dahildir.</li>
122 <li>Her modülün ana_sunucudaki sunuculara özgü yapılandırmaları sankon
123 sunucusununkilerle katıştırılır.</li>
126 <p>Esasen, ana_sunucu, sankon sunucularını oluştururken bir öntanımlılar
127 listesi veya öntanımlı değerlere dayanak noktası olarak ele alınır.
128 Fakat bu ana_sunucu tanımlarının yapılandırma dosyasındaki yerlerinin
129 saptanmasının konumuzla ilgisi yoktur; ana_sunucu yapılandırmasının
130 tamamı son katıştırma yapılacağı zaman çözümlenir. Bu bakımdan,
131 ana_sunucu tanımlarından bir kısmı sankon tanımlarından sonra yer alsa
132 bile sankon tanımlarında etkili olabilir.</p>
134 <p>Eğer, bu noktada ana_sunucu hiçbir <code>ServerName</code> satırı
135 içermiyorsa <program>httpd</program> programının çalıştığı makinenin
136 konak ismi öntanımlıdır. Ana_sunucunun <code>ServerName</code> için
137 yaptığı DNS sorgusundan dönen IP adreslerine <em>ana_sunucu adres
138 kümesi</em> diyoruz.</p>
140 <p>Tanımsız <code>ServerName</code> alanları için bir isme dayalı sankon,
141 sankonu tanımlayan <code>VirtualHost</code> yönergesinde belirtilen ilk
142 adresi öntanımlı değer kabul eder.</p>
144 <p>Sihirli <code>_default_</code> sankonları için ana_sunucunun
145 <code>ServerName</code> değeri kullanılır.</p>
149 <section id="hostmatching"><title>Sanal Konağın Belirlenmesi</title>
151 <p>Sunucu bir istek durumunda hangi sankonun kullanılacağını şöyle
154 <section id="hashtable"><title>IP adresi aranır</title>
156 <p>Bir adres ve port için bağlantı ilk alındığında Apache httpd tüm
157 <code>VirtualHost</code> tanımlarında bu çifti arar.</p>
159 <p>Arama başarısız olursa <code>*</code> (herşey) eşleşmelerine
162 <p>Bir eşleşme bulunamazsa hizmet ana sunucudan sunulur.</p>
164 <p>Arama sonucunda bu IP adresi için bulunmuş <code>VirtualHost</code>
165 tanımları varsa sonraki adım hizmetin bir IP’ye dayalı sankondan mı yoksa
166 isme dayalı bir sankondan mı sunulacağına karar vermektir.</p>
170 <section id="ipbased"><title>IP’ye dayalı sankon</title>
172 <p>Eğer en iyi eşleşme olarak saptanmış IP adresi ve port çiftini içeren
173 sadece bir <code>VirtualHost</code> yönergesi varsa artık karar vermek
174 için başka bir şey yapmaya gerek yoktur ve istek bu sankondan
179 <section id="namebased"><title>İsme dayalı sankon</title>
181 <p>Eğer en iyi eşleşme olarak saptanmış IP adresi ve port çiftini içeren
182 birden fazla <code>VirtualHost</code> yönergesi varsa, sonraki
183 adımlardaki "liste" eşleşen sankonların listesi olup sankonlar listede
184 yapılandırma dosyasındaki yerlerine göre sıralanırlar.</p>
186 <p>Bağlantı SSL kullanıyorsa, sunucunun <glossary
187 ref="servernameindication">Sunucu İsmi Belirtimi</glossary>ni
188 desteklediği durumlarda SSL istemci uzlaşımı, istenen konak ismiyle
189 birlikte TLS eklentisini de içeriyorsa, konak ismi, SSL olmayan
190 bağlantılardaki <code>Host:</code> başlığı kullanımına benzer şekilde
191 aşağıdaki gibi kullanılır. Aksi takdirde, SSL bağlantıları için adresin
192 eşleştiği ilk isme dayalı sankon kullanılır. Sunucunun bağlantı için
193 hangi sertifikayı kullanacağını sankon belirlediği için bu önemlidir.</p>
195 <p>İstek bir <code>Host:</code> başlık alanı içeriyorsa, listede
196 <code>ServerName</code> veya <code>ServerAlias</code> alanı başlık alanı
197 ile eşleşen ilk sankona bakılır. <code>Host:</code> alanı bir port
198 içerebilirse de Apache httpd bunu yoksayarak daima istemcinin isteği
199 gönderdiği portu gerçek port kabul eder.</p>
201 <p>Yapılandırma dosyasındaki belirtilen IP adresiyle eşleşen ilk sankon en
202 yüksek önceliğe sahiptir ve sunucu ismi bilinmeyen ve (bir HTTP/1.0
203 isteği gibi) <code>Host:</code> başlık alanı içermeyen istekleri de
208 <section id="persistent"><title>Kalıcı bağlantılar</title>
210 <p>Yukarıda açıklanan <em>IP araması</em> belli bir TCP/IP oturumunda
211 <em>bir</em> defaya mahsus yapıldığı halde bir kalıcı/KeepAlive bağlantı
212 sırasında <em>her</em> istek için ayrı bir <em>arama</em> yapılır. Başka
213 bir deyişle, bir istemci tek bir kalıcı bağlantı üzerinde farklı isme
214 dayalı sankonlardan sayfa talebinde bulunabilir.</p>
218 <section id="absoluteURI"><title>Mutlak URI</title>
220 <p>Eğer istekte belirtilen URI bir mutlak URI ise ve istek yapılan konak
221 ismi ve port ana sunucuyla veya sankonlardan biriyle eşleşiyorsa,
222 şema/konakadı/port öneki ayrılır ve elde edilen göreli URI ilgili
223 sankondan veya ana sunucudan sunulur. Eğer bir eşleşme sağlanamazsa
224 URI’ye dokunulmaz ve istek bir vekil isteği olarak ele alınır.</p>
227 <section id="observations"><title>İzlenimler</title>
230 <li>İsme dayalı sanal konak işlemleri, sunucunun en iyi eşleşen IP'ye
231 dayalı sanal konağı seçmesinin ardından uygulanır.</li>
233 <li>İstemcinin hangi IP adresine bağlandığını umursamıyorsanız, sanal
234 konaklarınızda adres olarak "*" kullanın, böylece yapılandırılmış
235 sankonların hepsine isme dayalı sanal konak işlemleri uygulanır.</li>
237 <li>Bir IP’ye dayalı sankon için asla <code>ServerAlias</code> ve
238 <code>ServerPath</code> değerine bakılmaz.</li>
240 <li>Sıralama sadece aynı IP adresine sahip isme dayalı sankonlar arasında
241 önemlidir. Aynı adres kümesine mensup isme dayalı sankonlardan
242 yapılandırma dosyasında ilk sırada yer alanı en yüksek önceliğe
245 <li>Eşleştirme işlemi sırasında <code>Host:</code>
246 başlık alanında belirtilen port asla kullanılmaz. Apache httpd daima
247 istemcinin isteği gönderdiği gerçek portu kullanır.</li>
249 <li>Eğer aynı IP adresine sahip IP’ye dayalı iki sankon varsa, bunlara
250 örtük olarak isme dayalı sanal konak işlemleri uygulanır. 2.3.11
251 sürümünden beri yeni davranış şekli budur.</li>
253 <li>Ana_sunucunun bir isteğe hizmet sunabilmesi için istemcinin
254 bağlandığı IP adresi ve port hiçbir yerde belirtilmemiş ve
255 hiçbir sankon ile eşleşme sağlanamamış olmalıdır. Başka bir deyişle,
256 istemcinin bağlandığı port ile eşleşen bir <code>_default_</code>
257 sankon olmadıkça adres ve port belirtmeyen bir isteğe ana_sunucu yanıt
260 <li><code>VirtualHost</code> yönergelerinde asla DNS isimleri
261 belirtmemelisiniz. Aksi takdirde sunucuyu başlatma sırasında DNS
262 sorgusu yapmaya zorlamış olursunuz. Listelenen tüm alanlar için DNS
263 üzerinde tam denetime sahip değilseniz bu ayrıca bir güvenlik
264 tehdidine yol açar. Bu konuda daha ayrıntılı bilgi edinmek için <a
265 href="../dns-caveats.html">DNS ile ilgili konular ve Apache</a>
266 belgesine bakınız.</li>
268 <li><code>ServerName</code> her sankon için ayrı ayrı belirlenmiş
269 olmalıdır. Aksi takdirde her sankon için bir DNS sorgusu gerekir.</li>
275 <section id="tips"><title>İpuçları</title>
277 <p><a href="../dns-caveats.html#tips">DNS konuları</a> sayfasındaki
278 ipuçlarına ilaveten burada da bazı ipuçları bulacaksınız:</p>
281 <li>Ana sunucu tanımlarının hepsini <code>VirtualHost</code>
282 tanımlarının öncesinde bitirin. Bu ayrıca yapılandırmanızın
283 okunabilirliğini de arttırır; <code>VirtualHost</code> tanımlarının
284 sonrasına sarkan yapılandırmaların katıştırılması işlemi tüm sanal
285 konakları etkileyebilen tanımlar bakımından bir
286 karışıklığa/belirsizliğe sebep olabilir.)</li>