mod_vhost_alias - Apache HTTP Sunucusu Sürüm 2.4

Apache Server 2.4

<-

Apache Modülü mod_vhost_alias

Açıklama:Kitlesel sanal konakların devingen olarak yapılandırılmasını sağlar
Durum:Eklenti
Modül Betimleyici:vhost_alias_module
Kaynak Dosyası:mod_vhost_alias.c

Özet

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/"
top

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.

top

Ö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://example.com/dizin/dosya.html için yapılan bir istek /usr/local/apache/sankonlar/example.com/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.example.com/dizin/dosya.html için yapılan bir istek /usr/local/apache/sankonlar/example.com/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/example.com/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/example.com/f/i/l/an/dizin/dosya.html dosyasından karşılanırdı.

Kullanıcıların çoğunun ortak isteği, istenen konak adının uzunluğu veya sayısı için endişelenmeksizin çok sayıda belge köküne çok sayıda alan adından erişilebilmesidir. Eğer istenen konak adı www.domain.example.com değil de sub.www.domain.example.com ise %3+ kullanımı, belge kök dizininin düşünüldüğü gibi example.com değil /usr/local/apache/vhosts/domain.example.com/... olmasını sağlar. Böyle durumlarda, daima alan adı ve tld ile sonuçlanan %-2.0.%-1.0 birleşiminin kullanımı daha yararlı olabilir. Böylece, tüm ilk, ikinci ve üçüncü seviye alt alan adlarını aynı dizine yönlendirecek bir yapılandırma yapılabilir:

VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"

Yukarıdaki örnekte, example.com, www.example.com ve hatta www.sub.example.com bile /usr/local/apache/vhosts/example.com dizinine yönlendirilecektir.

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.example.com/dizin/dosya.html için yapılan bir istek eğer falan.filan.example.com’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.example.com/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.example.com/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.

top

VirtualDocumentRoot Yönergesi

Açıklama:Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
Sözdizimi:VirtualDocumentRoot hesaplanan-dizin|none
Öntanımlı:VirtualDocumentRoot none
Bağlam:sunucu geneli, sanal konak
Durum:Eklenti
Modül:mod_vhost_alias

VirtualDocumentRoot yönergesi sunucu ismine göre belgelerin bulunacağı yeri Apache HTTP Sunucusunun 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.

Bilginize

VirtualDocumentRoot yönergesi aynı bağlamda veya alt bağlamlarda da kullanılabilen DocumentRoot yönergelerini geçersiz kılar. Genel sunucu etki alanına bir VirtualDocumentRoot konulması, daha sonra yer alan her sanal konak tanımı içinde VirtualDocumentRoot yönergesine None atamadıkça bu sanal konaklarda yapılmış DocumentRoot atamalarını geçersiz kılacaktır.
top

VirtualDocumentRootIP Yönergesi

Açıklama:Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
Sözdizimi:VirtualDocumentRootIP hesaplanan-dizin|none
Öntanımlı:VirtualDocumentRootIP none
Bağlam:sunucu geneli, sanal konak
Durum:Eklenti
Modül:mod_vhost_alias

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

top

VirtualScriptAlias Yönergesi

Açıklama:Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
Sözdizimi:VirtualScriptAlias hesaplanan-dizin|none
Öntanımlı:VirtualScriptAlias none
Bağlam:sunucu geneli, sanal konak
Durum:Eklenti
Modül:mod_vhost_alias

VirtualScriptAlias yönergesi, CGI betiklerinin bulunacağı yeri Apache httpd’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.

top

VirtualScriptAliasIP Yönergesi

Açıklama:Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
Sözdizimi:VirtualScriptAliasIP hesaplanan-dizin|none
Öntanımlı:VirtualScriptAliasIP none
Bağlam:sunucu geneli, sanal konak
Durum:Eklenti
Modül:mod_vhost_alias

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