<-
Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4 > Sanal Konaklar

Sanal Konak Eşlemenin Derinliğine İncelenmesi

Mevcut Diller:  en  |  fr  |  ko  |  tr 

Bu belgede, bir istek aldığında Apache’nin hangi sanal konak ile hizmet sunacağına nasıl karar verdiği açıklanmaya çalışılmıştır.

Çoğu kullanıcı hangi türü kullanacağına karar vermek için önce İsme dayalı ve IP’ye dayalı Sanal Konak bölümünü, sonra İsme Dayalı Sanal Konak Desteği veya IP’ye Dayalı Sanal Konak Desteği belgesini okumalı ve bazı örneklere göz atmalıdır.

Bunlardan sonra tüm ayrıntıları anlamak isterseniz tekrar bu sayfaya gelebilirsiniz.

Support Apache!

Ayrıca bakınız:

top

Yapılandırma Dosyası

Bu belgede <VirtualHost> bölümleri dışında kalan tanımlardan bahsederken ana_sunucu diyeceğiz.

<VirtualHost> bölümlerindeki tanımlamalardan bahsederken sankonlar diyeceğiz.

Her VirtualHost bölümü en az bir adres ve isteğe bağlı portlar içerir.

Sanal konak tanımlarının içindeki IP adreslerinin yerine konak isimleri kullanılabilir, fakat bunlar başlatma sırasında çözümleneceklerinden çözümlemedeki bir başarısızlık bu sanal konak tanımlarının yoksayılması ile sonuçlanacaktır. Bu bakımdan önerilmez.

VirtualHost yönergesinde görünen her adresin seçimlik bir portu olabilir. Eğer bir port belirtilmemişse, port olarak * belirtilmiş gibi bütün portlar dinlenir.

(VirtualHost yönergesinde belirtilen port numaraları Apache httpd'nin dinleyeceği port numaraları olarak yorumlanmaz, sadece bir isteği işleme sokarken hangi VirtualHost bölümünün seçileceğini belirlerler. Sunucunun dinleyeceği adresleri ve portları belirtmek için Listen yönergesini kullanın.)

Adreslerin tamamını (DNS sorgularındaki çoklu sonuçlar dahil) içeren kümeye sankonların adres kümesi denir.

Apache httpd, bir IP adresi ve port birleşimi için en belirgin eşleşmelerin listelendiği çok sayıdaki sanal konak arasında ayırdedici olarak istemci tarafından sağlanan HTTP Host başlığını kullanır.

ServerName yönergesi sunucu tanımının içinde herhangi bir yerde görünebilirse de her göründüğü yerde bir öncekini iptal eder. Hiç ServerName belirtilmemişse, Apache httpd, sunucu ismini sunucunun IP adresinden saptamaya çalışır.

Belli bir IP adresi ve port çifti için yapılandırma dosyasındaki ilk isme dayalı sankon önemlidir, çünkü başka hiçbir sankonun ServerName veya ServerAlias yönergesi ile eşleşmeyen bu adres ve port çifti için alınmış tüm isteklerde bu sankon kullanılır. Ayrıca, sunucunun Sunucu İsmi Belirtimini desteklemediği durumlarda tüm SSL bağlantıları için bu sankon kullanılır.

VirtualHost içindeki isimlerin sırası (jokersiz) bir ServerAlias gibi ele alınır (fakat hiçbir ServerAlias yönergesi ile geçersiz kılınmaz).

Her sankon için bazı değerler öntanımlı olarak atanır. Bunların başlıcaları:

  1. Sankon bir ServerAdmin yönergesi içermiyorsa, Timeout, KeepAliveTimeout, KeepAlive, MaxKeepAliveRequests, ReceiveBufferSize ve SendBufferSize yönergeleri için öntanımlı değerler ana_sunucudaki eşdeğerlerinden miras alınır. (Yani, bu yönergeler için ana_sunucudaki son değerler miras alınır.)
  2. Sankon için öntanımlı dizin erişim izinlerinin tanımlandığı "arama öntanımlıları" ana_sunucununkilere katılır. Buna her modülün dizinlere özgü yapılandırma bilgileri dahildir.
  3. Her modülün ana_sunucudaki sunuculara özgü yapılandırmaları sankon sunucusununkilerle katıştırılır.

Esasen, ana_sunucu, sankon sunucularını oluştururken bir öntanımlılar listesi veya öntanımlı değerlere dayanak noktası olarak ele alınır. Fakat bu ana_sunucu tanımlarının yapılandırma dosyasındaki yerlerinin saptanmasının konumuzla ilgisi yoktur; ana_sunucu yapılandırmasının tamamı son katıştırma yapılacağı zaman çözümlenir. Bu bakımdan, ana_sunucu tanımlarından bir kısmı sankon tanımlarından sonra yer alsa bile sankon tanımlarında etkili olabilir.

Eğer, bu noktada ana_sunucu hiçbir ServerName satırı içermiyorsa httpd programının çalıştığı makinenin konak ismi öntanımlıdır. Ana_sunucunun ServerName için yaptığı DNS sorgusundan dönen IP adreslerine ana_sunucu adres kümesi diyoruz.

Tanımsız ServerName alanları için bir isme dayalı sankon, sankonu tanımlayan VirtualHost yönergesinde belirtilen ilk adresi öntanımlı değer kabul eder.

Sihirli _default_ sankonları için ana_sunucunun ServerName değeri kullanılır.

top

Sanal Konağın Belirlenmesi

Sunucu bir istek durumunda hangi sankonun kullanılacağını şöyle belirler:

IP adresi aranır

Bir adres ve port için bağlantı ilk alındığında Apache httpd tüm VirtualHost tanımlarında bu çifti arar.

Arama başarısız olursa * (herşey) eşleşmelerine bakılır.

Bir eşleşme bulunamazsa hizmet ana sunucudan sunulur.

Arama sonucunda bu IP adresi için bulunmuş VirtualHost tanımları varsa sonraki adım hizmetin bir IP’ye dayalı sankondan mı yoksa isme dayalı bir sankondan mı sunulacağına karar vermektir.

IP’ye dayalı sankon

Eğer en iyi eşleşme olarak saptanmış IP adresi ve port çiftini içeren sadece bir VirtualHost yönergesi varsa artık karar vermek için başka bir şey yapmaya gerek yoktur ve istek bu sankondan sunulur.

İsme dayalı sankon

Eğer en iyi eşleşme olarak saptanmış IP adresi ve port çiftini içeren birden fazla VirtualHost yönergesi varsa, sonraki adımlardaki "liste" eşleşen sankonların listesi olup sankonlar listede yapılandırma dosyasındaki yerlerine göre sıralanırlar.

Bağlantı SSL kullanıyorsa, sunucunun Sunucu İsmi Belirtimini desteklediği durumlarda SSL istemci uzlaşımı, istenen konak ismiyle birlikte TLS eklentisini de içeriyorsa, konak ismi, SSL olmayan bağlantılardaki Host: başlığı kullanımına benzer şekilde aşağıdaki gibi kullanılır. Aksi takdirde, SSL bağlantıları için adresin eşleştiği ilk isme dayalı sankon kullanılır. Sunucunun bağlantı için hangi sertifikayı kullanacağını sankon belirlediği için bu önemlidir.

İstek bir Host: başlık alanı içeriyorsa, listede ServerName veya ServerAlias alanı başlık alanı ile eşleşen ilk sankona bakılır. Host: alanı bir port içerebilirse de Apache httpd bunu yoksayarak daima istemcinin isteği gönderdiği portu gerçek port kabul eder.

Yapılandırma dosyasındaki belirtilen IP adresiyle eşleşen ilk sankon en yüksek önceliğe sahiptir ve sunucu ismi bilinmeyen ve (bir HTTP/1.0 isteği gibi) Host: başlık alanı içermeyen istekleri de yakalar.

Kalıcı bağlantılar

Yukarıda açıklanan IP araması belli bir TCP/IP oturumunda bir defaya mahsus yapıldığı halde bir kalıcı/KeepAlive bağlantı sırasında her istek için ayrı bir arama yapılır. Başka bir deyişle, bir istemci tek bir kalıcı bağlantı üzerinde farklı isme dayalı sankonlardan sayfa talebinde bulunabilir.

Mutlak URI

Eğer istekte belirtilen URI bir mutlak URI ise ve istek yapılan konak ismi ve port ana sunucuyla veya sankonlardan biriyle eşleşiyorsa, şema/konakadı/port öneki ayrılır ve elde edilen göreli URI ilgili sankondan veya ana sunucudan sunulur. Eğer bir eşleşme sağlanamazsa URI’ye dokunulmaz ve istek bir vekil isteği olarak ele alınır.

İzlenimler

top

İpuçları

DNS konuları sayfasındaki ipuçlarına ilaveten burada da bazı ipuçları bulacaksınız:

Mevcut Diller:  en  |  fr  |  ko  |  tr 

top

Yorumlar

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.