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ı gerektiren donanım kullanmadıkça isme dayalı sanal konaklar kullanmalısınız. İstemci uyumuna bağlı IP’ye dayalı sanal barındırma için eskiden varolan sebepler genel amaçlı bir HTTP sunucusu için artık uygulanabilir değildir.
İsme dayalı sanal barındırma, IP'ye dayalı sanal barındırma seçim algoritmasını kullanmaz, yani uygun sunucu ismini arama işlemi sadece en iyi IP'ye dayalı adrese sahip sanal konaklar arasında gerçekleşir.
Sunucu isme dayalı sanal konaklardan uygun olanını nasıl seçer
İsme dayalı sanal konak çözümlemesinin ilk adımının IP'ye dayalı çözümleme olduğunun anlaşılması çok önemlidir. İsme dayalı sanal konak çözümlemesi en uygun isme dayalı sanal konağı seçerken önce en iyi IP'ye dayalı eşleşme adaylarının sayısını azaltır, sonra bunlar arasından en uygununu seçer. Tüm VirtualHost yönergelerinde IP adresi yerine joker kullanımı bu IP'ye dayalı eşlemeyi yersiz kılar.
Bir istek geldiğinde, sunucu, istekte kullanılan IP adresi ve portu ile en iyi eşleşen <VirtualHost> bileşenini bulur. Bu IP adresi ve port çifti ile eşleşen birden fazla sanal konak varsa, Apache httpd istekte kullanılan sunucu ismini ServerName ve ServerAlias yönergelerindeki isimlerle karşılaştırır.
Herhangi bir isme dayalı sanal konakta ServerName yönergesini kullanmazsanız, sunucu bu yönergeye sistem konak adından türetilmiş tam nitelenmiş alan adının (FQDN) tanımlandığını varsayacaktır. Bu örtük atama sezgiselliğin istenmediği bir sanal konak eşleşmesi ile sonuçlanabilir ve bu önerilmez.
Bir IP adresi ve port çifti için öntanımlı isme dayalı sankon
ServerName ve ServerAlias yönergelerinde bir eşleşme bulunamazsa, Apache httpd bu çift ile eşleşen sanal konaklar listesindeki ilk sanal konağı kullanır.
İsme Dayalı Sanal Konakların Kullanımı
İlgili Modüller
İlgili Yönergeler
core
DocumentRoot
ServerAlias
ServerName
<VirtualHost>
İlk adım sunacağınız her konak için ayrı bir <VirtualHost> bölümü oluşturmaktır. Her <VirtualHost> bölümü içinde sunulan konağı belirtmek üzere en azından bir adet ServerName yönergesine ve konak içeriğinin dosya sisteminde bulunduğu yeri gösteren bir DocumentRoot yönergesine ihtiyacınız olacaktır.
Ana konağı unutmayın
Mevcut <VirtualHost> yönergelerinin hiçbiriyle eşleşmeyen bir istek için, sunucu veya konak ismine bakılmaksızın genel sunucu yapılandırmanız kullanılır.
Mevcut sitenize isme dayalı bir sanal konak eklerseniz ve bu sanal konak ana sunucunun IP adresi ve portuna sahipse, ana sunucuya yapılan istekler için bu sanal konak kullanılır. Bu bakımdan, ServerName yönergesi ana sunucununki ile aynı olan bir öntanımlı sanal konak oluşturmak akıllıca olacaktır. Aynı arayüz ve portu kullanan fakat farklı yapılandırmalara sahip diğer alan isimlerinin sanal konakları (yani öntanımlı olmayanlar) bu öntanımlı sanal konağın sonrasına yerleştirilmelidir.
ServerName miras alma
İsme dayalı her sanal konak için daima bir ServerName belirtmek en iyisidir.
Eğer bir VirtualHost bölümü içinde bir ServerName belirtilmezse, sunucu ismi olarak ana sunucu yapılandırmasındaki isim kullanılır. Orada da bir sunucu ismi belirtilmemişse, başlatma sırasında dinlenen ilk IP adresinden ters DNS araması ile elde edilen isim kullanılır. Her iki durumda da miras alınan isim gereksiz yere isme dayalı sanal konak ismi haline gelecektir; bu bakımdan isme dayalı her sanal konak için daima bir ServerName belirtmek en iyisidir.
Örnek olarak, site1.example.com adresinden sitenizi sunmakta olduğunuzu ve bunun yanına aynı IP adresini kullanan site2.example.com sanal konağını eklemek istediğinizi varsayalım. Bunun için apache2.conf dosyanıza basitçe şu satırları ekleyebilirsiniz:
<VirtualHost *:80>
    #İlk sanal konak aynı zamanda *:80 için de öntanımlıdır.
    ServerName site1.example.com
    ServerAlias example.com
    DocumentRoot "/siteler/site1"
</VirtualHost>

<VirtualHost *:80>
    ServerName site2.example.com
    DocumentRoot "/siteler/site2"
</VirtualHost>
İsterseniz, <VirtualHost> yönergesinde argüman olarak * 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, <VirtualHost> bölümü içine bir ServerAlias yönergesi yerleştirmek suretiyle mümkün olur. Örneğin yukarıdaki örnekte, kullanıcıların aynı siteye farklı isimlerle erişmelerini mümkün kılmak için bölüm içine şu satırı ekleyebilirsiniz:
ServerAlias example.com *.example.com
Böylece example.com alanındaki tüm konaklar için gelen isteklere www.example.com 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 ServerName veya 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.
İsme dayalı sanal konaklardan en iyi eşleşme kümesinde olanlar yapılandırmada göründükleri sıraya göre işleme sokulur. Joker kullanımları arasında fark gözetilmeksizin ServerName veya ServerAlias yönergesi eşleşen ilk sanal konak 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).
Son olarak, sanal konak yapılandırmanıza, <VirtualHost> bölümlerinin içine başka yönergeler yerleştirerek ince ayar çekebilirsiniz. Çoğu yönerge bu bölümlere yerleştirilebilir ve sadece o sanal konakla ilgili yapılandırmayı değiştirmek için kullanılabilir. Belli bir yönergenin sanal konak bölümlerinde kullanılıp kullanılmayacağını yönergenin açıklamasında Bağlam satırına bakarak öğrenebilirsiniz. Ana sunucu bağlamındaki (<VirtualHost> bölümleri dışındaki) yapılandırma yönergelerinden sadece sanal konak bölümlerinde geçersiz kılınmamış olanlar kullanılacaktır.
Mevcut Diller: de | en | fr | ja | ko | tr
Yorum
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 again 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.