mod_vhost_alias Kitlesel sanal konakların devingen olarak yapılandırılmasını sağlar Extension mod_vhost_alias.c vhost_alias_module

Bu modül, hangi dosyaların sunulacağını saptamak için dosya yolunun parçası olarak HTTP isteğinin Host: başlığının ve/veya IP adresinin kullanılmasını mümkün kılarak devingen yapılandırmalı sanal konaklar oluşturur. Böylece benzer yapılandırmaya sahip çok büyük sayıda sanal konak kullanımı kolaşlaşır.

Bilginize

URI’leri dosya isimlerine dönüştürmek için mod_alias veya mod_userdir kullanılmışsa bunlar mod_vhost_alias yönergeleri tarafından aşağıda açıklandığı gibi geçersiz kılınırlar. Örneğin, aşağıdaki yapılandırma her durumda /cgi-bin/script.pl betiğini /usr/local/apache2/cgi-bin/script.pl betiğine eşleyecektir:

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
VirtualScriptAlias /nerede/bilinmiyor/%0/cgi-bin/
UseCanonicalName Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma
Dizin İsimlerinin Elde Edilmesi

Bu modüldeki tüm yönergeler bir dizgeyi bir dosya yoluna dönüştürerek çalışırlar. Dönüşüm dizgesi (bundan sonra “isim” diyeceğiz) ya sunucu ismi olur (bunun nasıl belirlendiğini öğrenmek için UseCanonicalName yönergesine bakınız) ya da sunucu üzerindeki sanal konağın IP adresi olur. Dönüşümü, printf’inkilerin benzeri birkaç biçem belirteci denetler:

%% Bir % imi yerleştirir.
%p Sanal konağın IP adresini yerleştirir.
%N.M İsmin parçalarını yerleştirir.

N ve M ismin alt dizgelerini belirtmek için kullanılır. N, ismin noktalarla ayrılmış bileşenlerinden seçim yaparken M, N ile seçilen parçadan karakter seçmekte kullanılır. M isteğe bağlı olup mevcut olmaması halinde öntanımlı olarak sıfırdır. Noktanın varlığı M’nin varlığına bağlıdır. Dönüşüm şöyle uygulanır:

0 ismin tamamı
1 ilk parça
2 ikinci parça
-1 son parça
-2 sondan bir önceki parça
2+ ikinci parça ve sonraki parçaların hepsi
-2+ sondan bir önceki parça ve daha önceki parçaların hepsi
1+ ve -1+ 0 ile aynı

N veya M parça sayısından büyükse dönüşüm dizgesi sadece alt çizgi karakterini içerir.

Örnekler

Sunucu yapılandırma dosyanızda isme dayalı sanal konaklar için aşağıdaki yönergeler kullanılıyor olsun:

UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/sankonlar/%0

http://mesela.dom/dizin/dosya.html için yapılan bir istek /usr/local/apache/sankonlar/mesela.dom/dizin/dosya.html dosyası ile yerine getirilecektir.

Çok büyük sayıda sanal konak için sankonlar dizininin boyutlarını küçük tutmak amacıyla dosyalar düzenlenebilir. Bunu yapılandırma dosyanızda şöyle yapabilirsiniz:

UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/sankonlar/%3+/%2.1/%2.2/%2.3/%2

http://falan.filan.mesela.dom/dizin/dosya.html için yapılan bir istek /usr/local/apache/sankonlar/mesela.dom/f/i/l/filan/dizin/dosya.html ile yerine getirilecektir.

Bu sefer de parçaları ismin sonundan toplayalım:

VirtualDocumentRoot /usr/local/apache/sankonlar/%3+/%2.-1/%2.-2/%2.-3/%2

Bu durumda istek /usr/local/apache/sankonlar/mesela.dom/n/a/l/filan/dizin/dosya.html ile karşılanırdı.

Şöyle bir şey de yapabilirsiniz:

VirtualDocumentRoot /usr/local/apache/sankonlar/%3+/%2.1/%2.2/%2.3/%2.4+

Bu örnek için istek /usr/local/apache/sankonlar/mesela.dom/f/i/l/an/dizin/dosya.html dosyasından karşılanırdı.

IP’ye dayalı sanal konaklar için yapılandırma dosyanızda şu satırlar olabilirdi:

UseCanonicalName DNS
VirtualDocumentRootIP /usr/local/apache/sankonlar/%1/%2/%3/%4/belgeler
VirtualScriptAliasIP /usr/local/apache/sankonlar/%1/%2/%3/%4/cgi-bin

http://falan.filan.mesela.dom/dizin/dosya.html için yapılan bir istek eğer falan.filan.mesela.dom’un IP adresi 10.20.30.40 olsaydı, /usr/local/apache/sankonlar/10/20/30/40/belgeler/dizin/dosya.html dosyası ile karşılanırdı. http://falan.filan.mesela.dom/cgi-bin/betik.pl için yapılan bir istek ise /usr/local/apache/sankonlar/10/20/30/40/cgi-bin/betik.pl betiğinin çalıştırılması ile sağlanırdı.

Bir VirtualDocumentRoot yönergesinin . karakterini içermesini isterseniz, bir biçem belirteci ile karışıklığa sebep olmaksızın bunu şöyle sağlayabilirsiniz:

VirtualDocumentRoot /usr/local/apache/sankonlar/%2.0.%3.0

Bu durumda http://falan.filan.mesela.dom/dizin/dosya.html için yapılan bir istek /usr/local/apache/sankonlar/filan.mesela/dizin/dosya.html dosyası ile karşılanacaktır.

LogFormat yönergesinin %V ve %A biçem belirteçleri bu modülle birlikte kullanıldığında çok yararlı olurlar.

VirtualDocumentRoot Bir sanal konağın belge kök dizinini devingen olarak yapılandırır. VirtualDocumentRoot hesaplanan-dizin|none VirtualDocumentRoot none server config virtual host

VirtualDocumentRoot yönergesi sunucu ismine göre belgelerin bulunacağı yeri Apache’nin saptamasını sağlar. hesaplanan-dizin’in dönüşüm sonucu DocumentRoot yönergesinin değeriymiş gibi belge ağacının kök dizini olarak kullanılır. hesaplanan-dizin yerine none belirtilmişse VirtualDocumentRoot iptal edilmiş olur. Bu yönerge VirtualDocumentRootIP yönergesinin kullanıldığı bağlamda yer alamaz.

VirtualDocumentRootIP Bir sanal konağın belge kök dizinini devingen olarak yapılandırır. VirtualDocumentRootIP hesaplanan-dizin|none VirtualDocumentRootIP none server config virtual host

VirtualDocumentRootIP yönergesi, dizinin saptanmasında sunucu ismi yerine bağlantının sonlandığı sunucunun IP adresini kullanması dışında VirtualDocumentRoot gibidir.

VirtualScriptAlias Bir sanal konağın CGI dizinini devingen olarak yapılandırır. VirtualScriptAlias hesaplanan-dizin|none VirtualScriptAlias none server config virtual host

VirtualScriptAlias yönergesi, CGI betiklerinin bulunacağı yeri Apache’nin saptamasını sağlamak bakımından VirtualDocumentRoot yönergesinin yaptığını yapar. /cgi-bin/ ile başlayan istekler için ise ScriptAlias yönergesinin yaptığını yapar.

VirtualScriptAliasIP Bir sanal konağın CGI dizinini devingen olarak yapılandırır. VirtualScriptAliasIP hesaplanan-dizin|none VirtualScriptAliasIP none server config virtual host

VirtualScriptAliasIP yönergesi, dizinin saptanmasında sunucu ismi yerine bağlantının sonlandığı sunucunun IP adresini kullanması dışında VirtualScriptAlias gibidir.