From: Nilgun Belma Buguner
Bu belgede sanal konakların sonu belirsiz bir Åekilde artıÅı karÅısında
- Apache httpd sunucusunun nasıl daha verimli kullanılacaÄı açıklanmıÅtır.
+ Apache HTTP Sunucusunun nasıl daha verimli kullanılacaÄı açıklanmıÅtır.
+ Devingen kitlesel konakları oluÅturmak için mod_rewrite
+ modülünün kullanımını açıklayan ayrı bir
+ belge de mevcuttur.
mod_rewrite
ile Kurumsal MüÅteriler Sistemimod_rewrite
ile KiÅisel Sayfalar Sistemimod_rewrite
ile Kitlesel Sanal Konaklar<VirtualHost>
bölümü içereceÄi zaman yapılacaklar ile
ilgilidir.
-
-NameVirtualHost 111.22.33.44
-<VirtualHost 111.22.33.44>
-
- ServerName musteri-1.dom
- DocumentRoot /siteler/musteri-1.dom/belgeler
- ScriptAlias /cgi-bin/ /siteler/musteri-1.dom/cgi-bin
-
-</VirtualHost>
-<VirtualHost 111.22.33.44>
-
- ServerName musteri-2.dom
- DocumentRoot /siteler/musteri-2.dom/belgeler
- ScriptAlias /cgi-bin/ /siteler/musteri-2.dom/cgi-bin
-
-</VirtualHost>
-# blah blah blah
-<VirtualHost 111.22.33.44>
-
- ServerName musteri-N.dom
- DocumentRoot /siteler/musteri-N.dom/belgeler
- ScriptAlias /cgi-bin/ /siteler/musteri-N.dom/cgi-bin
-
+
+<VirtualHost 111.22.33.44>
+ ServerName musteri-1.example.com
+ DocumentRoot /siteler/musteri-1/belgeler
+ ScriptAlias /cgi-bin/ /siteler/musteri-1/cgi-bin
</VirtualHost>
-
Ana fikir, tüm duraÄan <VirtualHost>
- yapılandırmalarını devingen olarak çalıÅan tek bir
- <VirtualHost>
bölümüyle deÄiÅtirmektir. Bunun elbette
- bazı getirileri olacaktır:
Ä°steÄimiz çok sayıda <VirtualHost>
bölümünü devingen
+ olarak çalıÅan tek bir <VirtualHost>
bölümüyle
+ deÄiÅtirmektir. Bunun elbette bazı getirileri olacaktır:
Ana götürüsü ise her sanal konak için ayrı birer günlük dosyasına sahip - olamayacak olmanızdır. Ãte yandan, dosya tanıtıcılarının sınırlı olması - nedeniyle bunu yapmayı zaten istemezsiniz. Günlük kayıtları için bir - fifo veya bir boru hattı oluÅturmak ve diÄer uçta çalıÅan bir süreç - vasıtasıyla günlükleri müÅterilere paylaÅtırmak daha iyidir (ayrıca, bu, - istatistikleri toplamanızı da kolaylaÅtırır).
+ olamayacak olmanızdır. Ãte yandan, dosya + tanıtıcılarının sınırlı olması nedeniyle bunu yapmayı zaten + istemezsiniz. Günlük kayıtları için bir fifo + veya bir boru hattı oluÅturmak ve diÄer uçta çalıÅan bir süreç + vasıtasıyla günlükleri müÅterilere paylaÅtırmak daha iyidir. Böyle bir + iÅlemle ilgili bir örneÄi split-logfile aracının belgesinde bulabilirsiniz.Bir sanal konak iki bilgiye bakarak belirlenir: IP adresi ve HTTP
isteÄindeki Host:
baÅlıÄının içeriÄi. Devingen sanal
barındırma tekniÄi, isteÄi yerine getirmek için kullanılacak dosya
- yoluna bu bilgiyi kendiliÄinden girmek esasına dayanır. Bu, Apache 2.0
- ile mod_vhost_alias
kullanarak oldukça kolay
- yapılabileceÄi gibi mod_rewrite
da kullanılabilir. Bu
- modüllerin her ikisi de öntanımlı olarak devre dıÅıdır. Bu tekniÄi
- kullanmak isterseniz Apacheâyi yeniden yapılandırıp derleyerek bu iki
- modülü etkin duruma getirmeniz gerekir.
Devingen sanal konaÄı normal bir sanal konak gibi göstermek için bazı
- Åeyleri âgöstermelikâ olarak yapmak gerekir. Bunlardan en önemlisi,
- Apache tarafından göreli URLâlerden normal URLâleri ve benzerlerini
+ yoluna bu bilgiyi kendiliÄinden girmek esasına dayanır. Bu, Apache httpd
+ ile mod_vhost_alias
modülünü kullanarak oldukça kolay
+ yapılabileceÄi gibi mod_rewrite modülü
+ de kullanılabilir.
Bu modüllerin her ikisi de öntanımlı olarak devre dıÅıdır. Bu tekniÄi + kullanmak isterseniz Apache httpd'yi yeniden yapılandırıp derleyerek bu + iki modülü etkin duruma getirmeniz gerekir.
+ +Devingen sanal konaÄı normal bir sanal konak gibi göstermek için
+ bazı bilgileri istekten saptamak gerekir. Bunlardan en önemlisi,
+ httpd tarafından göreli URLâlerden normal URLâleri ve benzerlerini
üretmek için kullanılan sunucu ismidir. Sunucu ismi
ServerName
yönergesi ile yapılandırılır ve CGIâler
tarafından SERVER_NAME
ortam deÄiÅkeni üzerinden
@@ -124,37 +122,36 @@ NameVirtualHost 111.22.33.44
DNS belirtilmiÅse, sunucu ismi, sanal konaÄın IP adresinden
tersine DNS sorgusu yapılarak elde edilir. Birincisi isme dayalı sanal
konaklar tarafından ikincisi ise IPâye dayalı sanal konaklar tarafından
- kullanılır. EÄer Apache, istekte Host:
baÅlıÄının olmayıÅı
+ kullanılır. EÄer httpd, istekte Host:
baÅlıÄının olmayıÅı
veya DNS sorgusunun baÅarısız olması sebebiyle sunucu ismini elde
edemezse son çare olarak ServerName
yönergesinde yazılı
deÄeri kullanır.
âGöstermelikâ yapılan Åeylerden biri de DocumentRoot
+
Saptanan bilgilerden biri de DocumentRoot
yönergesi ile yapılandırılan belge kök dizini olup CGIâler tarafından
DOCUMENT_ROOT
ortam deÄiÅkeni üzerinden kullanılır. Normal
yapılandırmada core
modülü tarafından dosya isimlerini
URIâlere eÅlerken kullanılır. Fakat sunucu devingen sanal konakları
kullanmak üzere yapılandırıldıÄında, eÅleÅtirmeyi farklı yollardan yapan
- baÅka bir modül devreye girer (mod_vhost_alias
veya
- mod_rewrite
). DOCUMENT_ROOT
ortam deÄiÅkenine
- deÄerini atamaktan sorumlu olan bu iki modülden biri kullanılmazsa CGI
- veya SSI belgeleri yanlıŠdeÄerlerle üretilirler.
mod_vhost_alias
veya
+ mod_rewrite
). DOCUMENT_ROOT
ortam
+ deÄiÅkenine deÄerini atamaktan sorumlu olan bu iki modülden biri
+ kullanılmazsa CGI veya SSI belgeleri yanlıŠdeÄerlerle üretilirler.
Yukarıda Amaç bölümünde özetlenen sanal konak
- düzenlemesinin mod_vhost_alias
kullanarak daha soysal bir
- tarzda gerçekleÅtirilmiÅ halini içeren httpd.conf
bölümü
- aÅaÄıdadır.
mod_vhost_alias
kullanarak gerçekleÅtirilmiÅ
+ halini içeren httpd.conf
bölümü aÅaÄıdadır.
Bu yapılandırmayı IPâye dayalı sanal konaklar için kullanmak isterseniz
# sunucu ismini Host: baÅlıÄından elde edelim
UseCanonicalName Off
-# Bu günlükleme biçiminde ilk alana bakarak
-# sanal konak günlükleri ayrıÅtırılabilir
+# Bu günlükleme biçiminde split-logfile aracı kullanılarak
+# ilk alana dayalı sanal konak günlükleri ayrıÅtırılabilir
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
@@ -167,27 +164,37 @@ VirtualScriptAlias /siteler/%0/cgi-bin
UseCanonicalName Off
yerine UseCanonicalName
DNS
yazmanız yeterlidir. Böylece dosya ismine eklenecek konak
- ismi sanal konaÄın IP adresinden türetilir.%0
deÄiÅkeni,
+ Host:
baÅlıÄı ile belirlenen istekteki sunucu isminin
+ ifadesidir.
Kullanım örnekleri için mod_vhost_alias
modülünün
+ belgesine bakınız.
Bu sistem, yukarıdaki yapılandırmanın bir ISSânin kiÅisel sayfalar
- sunucusuna uyarlanmasından baÅka bir Åey deÄildir. Biraz daha karmaÅık
- bir yapılandırma ile dosya isimlerine /home/kullanıcı/
- dizinlerini ekleyebiliriz. Farklı olarak her sanal konak için bir tane
- deÄil hepsi için bir tane cgi-bin
olacaktır.
-# Son bölüm hariç yukarıdaki yapılandırma, burada...
-
-# sunucu ismine eklenecek dosya isimlerini oluÅturalım
-VirtualDocumentRoot /siteler/%2/belgeler
-
-# ortak cgi-bin dizini
-ScriptAlias /cgi-bin/ /siteler/std-cgi/
-
Bu sistem, yukarıdaki yapılandırmanın bir ISSânin sunucusuna
+ uyarlanmasından baÅka bir Åey deÄildir. %2
deÄiÅkenini
+ kullanarak, dosya isminde kullanmak üzere sunucu isminin alt dizgelerini
+ seçebiliriz, böylece, örneÄin www.user.example.com
belgeleri
+ /home/user/www
dizininde bulunabilir. Farklı olarak her
+ sanal konak için bir tane deÄil hepsi için bir tane cgi-bin
+ olacaktır.
+ UseCanonicalName Off
+
+ LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
+ CustomLog logs/access_log vcommon
+
+ # sunucu ismini içerecek dosya isimlerini oluÅturalım
+ VirtualDocumentRoot /home/%2/www
+
+ # ortak cgi-bin dizini
+ ScriptAlias /cgi-bin/ /siteler/std-cgi/
+
mod_vhost_alias
belgesinde daha karmaÅık
VirtualDocumentRoot
örnekleri vardır.
Daha karmaÅık ayarlamalar yaparak Apacheâinin normal +
Daha karmaÅık ayarlamalar yaparak httpdânin normal
EÄer ilk <VirtualHost>
bölümlerini farklı kitlesel sanal konak
yapılandırmaları için kullanabilirsiniz. ÃrneÄin, bireysel
müÅterileriniz için bir IP adresiniz, kurumsal müÅterileriniz için de
@@ -224,7 +231,7 @@ LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
<VirtualHost 111.22.33.44>
- ServerName kurumsal.iss.dom
+ ServerName kurumsal.example.com
CustomLog logs/access_log.kurumsal vcommon
@@ -235,7 +242,7 @@ LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
<VirtualHost 111.22.33.45>
- ServerName bireysel.iss.dom
+ ServerName bireysel.example.com
CustomLog logs/access_log.bireysel vcommon
@@ -249,13 +256,14 @@ LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
<VirtualHost>
bölümü bir ServerName
yönergesi içermezse ilgili IP
için ters DNS sorgusu yapılır. EÄer sorgudan elde edilen isim
sunucunun ismi deÄilse bu istenmeyen duruma bir çözüm olarak bir
- bilgilendirme bölümü (ServerName isimsiz.iss.dom
)
+ bilgilendirme bölümü (örn, ServerName bilgi.example.com
)
eklenebilir.
Ä°lk örnekte IPâye dayalı sanal konaklar için
kullanılmak istenirse yapılandırmada neyin nasıl deÄiÅtirileceÄi
@@ -280,131 +288,16 @@ VirtualScriptAliasIP /siteler/%0/cgi-bin
mod_rewrite
ile Kurumsal MüÅteriler SistemiBuradaki httpd.conf
bölümü de ilk
- örnekteki gibi elde edilmiÅtir. Ä°lk yarı, bazı deÄiÅiklikler dıÅında
- yukarıdaki örneÄe çok benzer. Bu deÄiÅiklikler yapılandırmanın
- mod_rewrite
bölümünün düzgün çalıÅması ve geriye doÄru
- uyumluluk için gereklidir. Ä°kinci yarı, asıl iÅi yapan
- mod_rewrite
yapılandırmasını içerir.
Biraz uzmanlık gerektiren bazı kısımlar var: Ãntanımlı olarak
- mod_rewrite
diÄer (mod_alias
, vs. gibi) URI
- dönüÅüm modüllerinden önce çalıÅır. Dolayısıyla bu modülleri kullanmak
- isterseniz, mod_rewrite
âı bunlara izin verecek Åekilde
- yapılandırmalısınız. Ayrıca her devingen sanal konaÄa eÅdeÄer bir
- ScriptAlias
yapmak için de biraz büyü yapmak gerekir.
-# Sunucu ismini Host: baÅlıÄınıdan alalım.
-UseCanonicalName Off
-
-# Günlük dosyasından bilgileri ayıklayabilelim.
-LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
-CustomLog logs/access_log vcommon
-
-<Directory /siteler/hosts>
-
- # ScriptAlias için yaptıklarımızla CGI betiklerini
- # çalıÅmaya zorlayamayacaÄımızdan ExecCGI burada gerekli.
- Options FollowSymLinks ExecCGI
-
-</Directory>
-
-# Ä°Åin zor yanına geldik.
-
-RewriteEngine On
-
-# Host: baÅlıÄından elde edilen sunucu isminde harf
-# büyüklükleri çeÅitli olabilir. Hepsini küçük harf yapalım.
-RewriteMap lowercase int:tolower
-
-## önce normal belgelerle anlaÅalım:
-# Alias /icons/ çalıÅsın - diÄer rumuzlar için yineleyelim
-RewriteCond %{REQUEST_URI} !^/icons/
-# CGIâler de çalıÅsın.
-RewriteCond %{REQUEST_URI} !^/cgi-bin/
-# Biraz da büyü yapalım.
-RewriteRule ^/(.*)$ /siteler/${lowercase:%{SERVER_NAME}}/belgeler/$1
-
-## Artık CGIâlerle anlaÅabiliriz. - Bir eylemci isteyelim.
-RewriteCond %{REQUEST_URI} ^/cgi-bin/
-RewriteRule ^/(.*)$ /siteler/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [H=cgi-script]
-
-# Bu kadar!
-
mod_rewrite
ile KiÅisel Sayfalar SistemiBurada da ikinci örnekte yaptıklarımızı - yapıyoruz.
- -
-RewriteEngine on
-
-RewriteMap lowercase int:tolower
-
-# CGIâler çalıÅsın.
-RewriteCond %{REQUEST_URI} !^/cgi-bin/
-
-# konak ismi doÄru mu bakalım yoksa RewriteRule çalıÅmaz.
-RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.dom$
-
-# URIânin baÅına sanal konak ismini ekleyelim.
-# [C], bunu bitirdikten sonra, sonraki rewrite ile devam et demek.
-RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
-
-# Artık asıl dosya ismini oluÅturabiliriz.
-RewriteRule ^www\.([a-z-]+)\.isp\.dom/(.*) /home/$1/$2
-
-# Ortak CGI dizinini tanımlayalım.
-ScriptAlias /cgi-bin/ /siteler/std-cgi/
-
Burada, sanal konak isimlerinden belge kök dizini elde ederken
- mod_rewrite
modülünün daha geliÅkin özelliklerinden
- yararlanarak isimleri ayrı bir dosyadan okutacaÄız. Bu, esnekliÄi
- artırır ama daha karmaÅık bir yapılandırma gerekir.
AÅaÄıdaki içeriÄe sahip bir vhost.map
dosyamız olsun:
-musteri-1.dom /siteler/kurumsal/1
-musteri-2.dom /siteler/kurumsal/2
-# ...
-musteri-N.dom /siteler/kurumsal/N
-
httpd.conf
dosyamız da Åunları içerecektir:
-RewriteEngine on
-
-RewriteMap lowercase int:tolower
-
-# EÅlem dosyasını tanımlayalım
-RewriteMap vhost txt:/siteler/conf/vhost.map
-
-# Rumuzları yukarıdaki gibi halledelim.
-RewriteCond %{REQUEST_URI} !^/icons/
-RewriteCond %{REQUEST_URI} !^/cgi-bin/
-RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
-# EÅlemeyi dosyalar için de yapalım.
-RewriteCond ${vhost:%1} ^(/.*)$
-RewriteRule ^/(.*)$ %1/belgeler/$1
-
-RewriteCond %{REQUEST_URI} ^/cgi-bin/
-RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
-RewriteCond ${vhost:%1} ^(/.*)$
-RewriteRule ^/(.*)$ %1/cgi-bin/$1 [H=cgi-script]
-
mod_rewrite
ile Kitlesel Sanal KonaklarKitlesel sanal barındırma mod_rewrite
modülü kullanarak
+ da gerçeklenebilir. Ya basitçe RewriteRule
yönergelerini kullanırsınız ya da daha karmaÅık
+ olarak sanal konak tanımlarınızı harici bir yerde tutar ve bunlara
+ RewriteMap
yönergesini
+ kullanarak eriÅirsiniz. Bu teknikler ayrıntılı olarak
+ rewrite belgelerinde
+ açıklanmıÅtır.
Bu belgede isme dayalı sanal konakların ne zaman, nasıl kullanılacakları açıklanmıÅtır.
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.
+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ı gerektirecek çok özel bir sebep olmadıkça isme - dayalı sanal konaklar kullanmalısınız. IPâye dayalı sanal konakların - kullanımını gerektirebilecek bazı durumlar:
- -Ä°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.
+İ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.
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.
İlgili Modüller | İlgili Yönergeler |
---|---|
İsme dayalı sanal konakları kullanmak için, bu konaklar için istekleri
- kabul edecek sunucuya IP adresini (ve muhtemelen portu da)
- belirtmelisiniz. Bu iÅlem NameVirtualHost
yönergesiyle yapılır. Normal
- Åartlar altında sunucu üzerinde bütün IP adreslerinin kullanılması
- gerekir; bunun için NameVirtualHost
- yönergesine argüman olarak *
belirtebilirsiniz. Ãok sayıda
- port kullanmayı planlıyorsanız (SSL çalıÅtırmak gibi), argümana
- *:80
Åeklinde port ekleyebilirsiniz. Yalnız, NameVirtualHost
yönergesinde bir IP adresi
- belirtmiÅ olmakla sunucunun kendiliÄinden o IP adresini dinlemeyeceÄine
- dikkat ediniz. Bu konuda ayrıntılı bilgi edinmek için Apacheânin kullanacaÄı adreslerin ve portların
- ayarlanması belgesine bakınız. Ayrıca, sunucuda, burada belirttiÄiniz
- IP adresine sahip bir aÄ arabirimi olmalıdır.
İlgili Modüller | İlgili Yönergeler |
---|---|
Sonraki adım sunacaÄınız her konak için ayrı bir <VirtualHost>
bölümü oluÅturmaktır.
- <VirtualHost>
- yönergesinin argümanı ile eÅleÅen bir NameVirtualHost
yönergesi tanımlanmıŠolmalıdır
- (deÄer normalde "*:80" olacaktı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.
Ä°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.
Mevcut sitenize sanal konaklar eklerseniz, mevcut siteniz için de bir
- <VirtualHost>
bölümü
- oluÅturmalısınız. Bu sanal konak bölümü içinde kullanacaÄınız
- ServerName
ve DocumentRoot
yönergelerinin argümanları, bu
- yönergelerin sunucu geneli için belirttiÄiniz deÄerlerini
- içermelidir. Bu sanal konaÄı yapılandırma dosyanızdaki ilk sanal konak
- yapın ki, öntanımlı konak olsun.
Any request that doesn't match an existing Mevcut <VirtualHost>
yönergelerinin
+ hiçbiriyle eÅleÅmeyen bir istekiç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.
Ãrnek olarak, www.biralan.tld
adresinden sitenizi sunmakta
- olduÄunuzu ve bunun yanına aynı IP adresini kullanan
- www.digeralan.tld
sanal konaÄını eklemek istediÄinizi
+
Ã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 httpd.conf
dosyanıza basitçe Åu
satırları ekleyebilirsiniz:
- NameVirtualHost *:80
-
<VirtualHost *:80>
- ServerName www.biralan.tld
- ServerAlias biralan.tld *.biralan.tld
- DocumentRoot /siteler/biralan
+ #İ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 www.digeralan.tld
- DocumentRoot /siteler/digeralan
+
+ ServerName site2.example.com
+ DocumentRoot /siteler/site2
</VirtualHost>
Ä°sterseniz, NameVirtualHost
ve
- <VirtualHost>
- yönergelerinde 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.
Ä°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ü
@@ -152,19 +154,24 @@ Barındırma
- ServerAlias biralan.tld *.biralan.tld
+ ServerAlias example.com *.example.com
Böylece biralan.tld
alanındaki tüm konaklar için gelen
isteklere www.biralan.tld
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
+ *
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.
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ı
@@ -174,75 +181,6 @@ Barındırma
Sunucuya bir istek geldiÄinde, sunucu önce IP adresiyle eÅleÅmesi olası
- NameVirtualHost
bölümleri var mı diye
- bakar. Varsa, IP adresini eÅleÅtirmek için NameVirtualHost
bölümlerine tek tek bakar ve
- istenen konak ismi ile eÅleÅen bir ServerName
veya ServerAlias
yönergesi bulmaya
- çalıÅır. Bir tane bulduÄunda, sunucu için onun yapılandırmasını kullanır.
- Ä°simle eÅleÅen bir sanal konak bulamazsa IP adresiyle eÅleÅen ilk
- sanal konaÄın yapılandırmasını kullanır.
Bir önkabul olarak yapılandırma dosyasında rastlanan ilk sanal konak
- öntanımlı sanal konaktır. IP adresi bir sanal konakla eÅleÅtiÄi
- takdirde ana sunucunun DocumentRoot
deÄeri asla kullanılmayacaktır.
- Sanal konaklardan hiçbiriyle eÅleÅmeyen istekler için özel bir
- yapılandırmanız olsun isterseniz, bu yapılandırmayı yapılandırma
- dosyanızdaki ilk <VirtualHost>
bölümüne yerleÅtirmeniz
- yetecektir.
Evvelce de bahsedildiÄi gibi, isme dayalı sanal konakların gerektiÄi gibi - çalıÅması için gerekli veriyi göndermeyen bazı istemciler vardır. Bu - istemcilere daima o IP adresinin yapılandırma dosyasındaki ilk sanal - konaÄının (isme dayalı baÅat sanal konak) sayfaları - gönderilir.
- -Lütfen dikkat edin, eski deyince gerçekten de antika demek istiyoruz.
- Günümüzde bu tür tarayıcılara rastlamanız neredeyse imkansızdır. Günümüz
- tarayıcılarının hepsi isme dayalı sanal konakların gerektirdiÄi
- Host
baÅlıÄını gönderirler.
Olayı fazla germeden ServerPath
- yönergesini kullanarak sorunun çevresinden dolanmak mümkündür:
Ãrnek yapılandırma:
- -
- NameVirtualHost 111.22.33.44
-
- <VirtualHost 111.22.33.44>
-
- ServerName www.biralan.tld
- ServerPath /biralan
- DocumentRoot /siteler/biralan
-
- </VirtualHost>
-
Bu ne anlama geliyor? Anlamı, "/biralan
" ile baÅlayan her
- URI isteÄi www.biralan.tld
sanal konaÄı tarafından sunulacak,
- demektir. Yani, tüm istemcilerin
- http://www.biralan.tld/biralan/
olarak eriÅtiÄi yere
- Host:
baÅlıÄı gönderen istemciler
- http://www.biralan.tld/
olarak eriÅirler.
Bunu gerçekleÅtirebilmek için baÅat sanal konaÄın baÅ sayfasına
- http://www.biralan.tld/biralan/
için bir baÄ koyduktan sonra
- sanal konaÄın sayfalarında ya tamamen göreli baÄlar
- ("dosya.html
", "../simgeler/resim.png
" gibi)
- veya /biralan/
ile öncelenmiÅ baÄlar
- ("http://www.biralan.tld/biralan/muht/dosya.html
" veya
- "/biralan/muht/dosya.html
" gibi) kullanın.
Bu iÅlem biraz disiplin gerektirse de bu yazılanlara sıkı sıkıya baÄlı - kalarak hem eski hem de yeni tarayıcıların sayfalarınızı doÄru - görüntülemesini saÄlamıŠolursunuz.
-Mevcut Diller: de |
diff --git a/docs/manual/vhosts/name-based.xml.meta b/docs/manual/vhosts/name-based.xml.meta
index c87cdc59f2..02dd49e4b0 100644
--- a/docs/manual/vhosts/name-based.xml.meta
+++ b/docs/manual/vhosts/name-based.xml.meta
@@ -12,6 +12,6 @@