Sanal Konak Örnekleri
Apache’nin 80. portu dinlediğinden emin olalım Listen 80 DocumentRoot /siteler/ecom ServerName example.com
Diğer yönergeler, burada ... DocumentRoot /siteler/eorg ServerName example.org
Diğer yönergeler, burada ...
vs. ...
Bu, 192.168.1.2 adresindeki "ana sunucu" olsun ServerName sunucu.example.com DocumentRoot /siteler/anasunucu DocumentRoot /siteler/ecom ServerName exampl
Diğer yönergeler, burada ... DocumentRoot /siteler/eorg ServerName example.org
IP'ye dayalı DocumentRoot /siteler/eedu ServerName example.edu DocumentRoot /siteler/egov ServerName example.go
... DocumentRoot /siteler/default
...
... DocumentRoot /siteler/enet ServerName example.enet ServerAlias *.example.enet
ilk sanal konak DocumentRoot /siteler/baska RewriteEngine On RewriteRule . /siteler/baska/index.html
... DocumentRoot /siteler/baska/bir ServerName bir.baska.tld ServerPath /bir/ RewriteEngine On RewriteRule ^(/bir/.*) /siteler/baska$1
... DocumentRoot /siteler/baska/iki ServerName iki.baska.tld ServerPath /iki/ RewriteEngine On RewriteRule ^(/iki/.*) /siteler/baska$1
yönergesinin kullanımıBu örnekte, makinenizin tek bir IP adresine sahip olduğunu ve bu makineye example.com
şeklinde (DNS A kayıtları sayesinde) farklı isimlerle erişilebildiğini varsayalım.
Apache sunucusu üzerinde sanal konakları yapılandırmakla bu konak isimleri için sihirli bir şekilde DNS kayıtlarının da oluşturulmasını sağlamış olmazsınız. Bu isimler için ilgili DNS kayıtlarında sizin IP adresinize çözümlenen A kayıtlarının olması gerekir, yoksa sitenize kimse erişemez. Sitelere erişimi yerel olarak denemek isterseniz, bu girdileri hosts
dosyanıza yazabilirsiniz. Fakat bu sadece sizin makinenizde çalışır. Yerel ağınızdaki her makinenin hosts
dosyasına bu girdileri yazarak yerel ağdan erişimi bu yolla sağlayabilirsiniz ama dış ağdan gelecek ziyaretçileriniz için DNS kayıtlarınızın olması şarttır.
Yıldız imleri tüm adreslerle eşleşmeyi sağladığından ana sunucu (yapılandırma dosyası genelindeki yapılandırma - sunucu geneli) erişilebilir olmayacaktır. Yapılandırma dosyasındaki ServerName example.com
yönergeli konak, ilk sanal konak olduğundan en yüksek önceliğe sahiptir ve öntanımlı veya baskın site olarak davranır. Yani, hiçbir ServerName
yönergesi ile eşleşmeyen bir istek alındığında bu istek ilk VirtualHost
IP adresi ve porta dayalı ayrımı umursamıyorsanız, *
yerine kendi IP adresinizi yazabilirsiniz.
Bununla birlikte, IP adresinin önceden kestirilebilir olmadığı sistemlerde, örneğin, hizmet sağlayıcınıza çevirmeli ağ ile bağlanıyor ve onun rasgele atadığı bir IP adresi için bir devingen DNS çözümü kullanıyorsanız, IP adresi değil de *
kullanmak daha çok işinize yarayacaktır. Yıldız imi her IP adresi ile eşleşeceğinden IP adresiniz değişse bile bu yapılandırmayı değiştirmeden kullanabilirsiniz.
Yukarıdaki yapılandırmayı hemen hemen tüm isme dayalı sanal konaklar için kullanabilirsiniz. Bu yapılandırmanın çalışmayacağı tek durum, farklı içerikleri farklı IP adreslerinden sunma gereğiyle karşılaşmaktır.
Burada açıklanan teknikler istendiği kadar çok IP adresine genişletilebilir.
Sunucunun iki IP adresi olsun. Birinden "ana sunucu" (192.168.1.2
hizmet versin. Bu arada başka sanal konakları da sunabilelim istiyoruz.
adresinden gelmeyen tüm isteklere ana sunucu (sunucu.example.com
adresinden gelen sunucu ismi belirtmeyenler ile Host:
başlığı belirtmeyenlere ise example.com
Sunucu makine iki IP adresine sahip olsun. Biri iç ağa (192.168.1.1
ismi dış ağda dış ağa bakan IP’ye, iç ağda ise iç ağa bakan IP’ye çözümleniyor olsun.
Bu durumda, sunucu hem iç hem de dış ağdan gelen isteklere aynı içerik, dolayısıyla aynı VirtualHost
bölümü ile hizmet verebilir.
İç ağdan istek yapan biri, tam nitelenmiş konak ismi sunucu.example.com
Ayrıca, yukarıdaki gibi iki ayrı IP adresi belirtmek yerine sadece *
belirtmekle sunucunun tüm IP adreslerine yine aynı içerikle yanıt vereceğine dikkat ediniz.
Aynı IP adresine sahip çok sayıda konak ismine sahip olduğunuzu ve bunların bazılarının farklı portları kullanmasını istediğinizi varsayalım. Aşağıdaki örnekte, isim eşleşmesinin, en iyi eşleşen IP adresi ve port çifti saptandıktan sonra yer alması gösterilmiştir.
yönergelerinde belirtilmeyen adreslerle yapılan isteklere (örneğin, localhost
diye iki IP adresi olsun ve iki konak da hem 80 hem de 8080 portlarında çalışsınlar istiyoruz.
yönergesinde belirtilen bir IP adresi başka bir sanal konakta görünmüyorsa bu sankon kesinlikle IP'ye dayalı bir sanal konaktır.
’nin birlikte kullanımıBu örnekte bir arabirimi dışarıya bakan bir makinede, başka bir makinede çalışan bir sunucuya sanal konak olarak, bir vekil sunucu çalıştırmak istediğimizi varsayıyoruz. 192.168.111.2
IP adresli bir makinede aynı isimde bir sanal konak yapılandırılmış olsun. Çok sayıda konak ismi için vekil olarak tek bir makine kullandığımızdan ve konak isminin de aktarılmasını arzuladığımızdan
yönergesini kullandık.ProxyPreserveHost On
Bir IP adresi ve port belirtilmeyen veya hiçbir sanal konağın hiçbir adresi/portu ile eşleşmeyen istekleri yakalamak istersek...
Bütün portlarla eşleşen böyle bir öntanımlı sanal konağın kullanımı hiçbir isteğin ana sunucuya gitmemesi sonucunu doğurur.
Bir öntanımlı sanal konak, asla, isme dayalı sanal konaklar için kullanılmış bir adrese/porta gönderilmiş bir isteğe hizmet sunmaz. Eğer istek bilinmeyen bir Host:
başlığına sahipse veya hiç Host:
başlığı içermiyorsa isteğe daima ilk (yapılandırma dosyasındaki ilk) isme dayalı sanal konak hizmet sunar.
Her isteği tek bir bilgilendirme sayfasına (veya betiğe) yönlendirmek isterseniz
Önceki yapılandırmaya ek olarak 80. portta ayrı bir default
80. porttan hizmet sunan default
sanal konağı IP adresi belirtilmeyen tüm istekleri yakalar, bunu yapabilmesi için yapılandırma dosyasında tüm portlara hizmet sunan benzerinden önce yer almalıdır. Bu durumda ana sunucu hiçbir isteğe yanıt vermeyecektir.
sanal konağının sadece 80. porttan hizmet sunmasını istersek...
sanal konağı, diğer portlardan gelen adres belirtilmemiş isteklere ise ana sunucu hizmet verecektir.
kullanımından daha yüksek öncelik sağlar.
İsme dayalı sanal konak örneklerinin 2. sinde adı geçen example.org
bu örnekte kendi IP adresinden hizmet veriyor olsun. İsme dayalı sanal konağı eski IP adresiyle kaydetmiş vekiller ve isim sunucularından kaynaklanacak olası sorunlardan kaçınmak için yansılama sırasında sanal konağı hem eski hem de yeni IP adresiyle sunmamız lazım.
Çözüm kolay, çünkü yapacağımız sadece VirtualHost
yönergesine yeni IP adresini (192.168.1.2
Böylece sanal konağa hem yeni (bir IP’ye dayalı sanal konak olarak) hem de eski adresinden (bir isme dayalı sanal konak olarak) erişilebilecektir.
yönergesinin kullanımıİsme dayalı iki sanal konağı olan bir sunucumuz olsun. Doğru sanal konağa erişebilmek için istemcinin doğru Host:
başlığı göndermesi gerekir. Eski HTTP/1.0 istemcileri böyle bir başlık göndermedikleri için Apache istemcinin hangi sanal konağa erişmek istediğini bilemez (ve isteğe ilk sanal konaktan hizmet sunar). Daha iyi bir geriye uyumluluk sağlamak için isme dayalı sanal konağa bir önek bağlantısı içeren bir bilgilendirme sayfası sunmak üzere yeni bir sanal konak oluşturabiliriz.
yönergesinden dolayı ServerPathhttp://bir.baska.tld/bir/
başlığı göndermesi şartıyla “bir” sanal konağı hizmet sunacaktır. İstemci, bir Host:
başlığı göndermediği takdirde ilk konaktan bir bilgilendirme sayfası alacaktır.
Yalnız buradaki bir tuhaflığa dikkat edin: Eğer istemci bir Host:
yönergesi, bir istemcinin, bir URL öneki belirtsin ya da belirtmesin doğru RewriteRuleHost:
başlığı gönderdiğinden emin olmak için kullanılmıştır.
Modüller | Yönergeler | SSS | Terimler | Site Haritası
Apache HTTP Sunucusu Sürüm 2.4
Sanal Konak Örnekleri
Mevcut Diller: en | fr | ja | ko | tr
Bu belgede sanal konaklarla ile ilgili olarak karşılaşılması olası tüm senaryolara yer verilmeye çalışılmıştır. Buradaki senaryolar, tek bir sunucu üzerinde isme dayalı veya IP’ye dayalı sanal konaklar aracılığıyla çok sayıda sitenin sunumu ile ilgilidir.
- Tek bir IP ile çok sayıda isme dayalı site
- IP adresleri farklı çok sayıda isme dayalı site
- Aynı içeriği farklı IP adresleriyle sunmak (örn., dahili ve harici ağlara)
- Farklı portlarla farklı siteler
- IP’ye dayalı sanal konaklar
- Hem IP’ye hem de porta dayalı sanal konaklar
- Hem isme hem de IP‘ye dayalı sanal konaklar
- Virtualhost ve mod_proxy’nin birlikte kullanımı
- _default_ sanal konakları
- Bir isme dayalı sanal konağı bir IP’ye dayalı sanal konakla yansılamak
- ServerPath yönergesinin kullanımı
Virtualhost
mod_proxy
_default_
ServerPath