Bağlamında _default _: * ve *: * arasındaki fark


34

VirtualHost Bağlamında " default : *" ve "*: *" arasındaki farkı bilmek istiyorum .

<VirtualHost _default_:*>
  #...
  ServerName host.example.com
  #...
</VirtualHost>

<VirtualHost *:*>
  #...
  ServerName host.example.com
  #...
</VirtualHost>

Kullanım farkını ve faydasını bilmiyorum.

thk

Yanıtlar:


39

Çözüm, Virtualhost direktifiyle ilgili Apache 2.2 belgelerinde açıktır :

Sözdizimi: ... (...) Addr olabilir:

  • Sanal ana bilgisayarın IP adresi;
  • Sanal ana bilgisayarın IP adresi için tam etki alanı adı (önerilmez);
  • Tüm IP adreslerini eşleştirmek için yalnızca NameVirtualHost * ile birlikte kullanılan karakter * ; veya
  • Benzersiz IP adreslerini yakalamak için yalnızca IP sanal barındırmada kullanılan _default_ dizesi .

Virtualhost'leri kullanmanın iki yolu vardır: Ad tabanlı sanal ev sahibi ve IP tabanlı Sanal ev sahibi.

Adlandırılmış sanal ana bilgisayarlarda, her biri bir veya birkaç etki alanı adını yöneten ve her biri bir çiftle ilişkilendirilmiş bir sanal ana bilgisayar listesi vardır listening IP:port. bu ana bilgisayardaki tüm IP'leri* ifade eden özel bir değerdir . Varsayılan virtualHost, verilen her bir dinleme adresi için bu listedeki ilk ilan edilmiş olandır.

IP tabanlı VirtualHosts ile VirtualHost'un ServerNameyönergesi kullanılmaz, önemli bilgiler dinleyen IP'dir (ve bağlantı noktası) ve varsayılan VirtualHost, gelen isteği işleyen IP ile eşleşen ilk adettir.

Yani adlandırılmış bir temel sanal evre yapılandırması ile:

  • <Virtualhost *:80> with ServerName foo.com "bu ana bilgisayarda yönetilen tüm IP'lerde", "80 numaralı bağlantı noktasında", "istek ana bilgisayar başlığı foo.com ise", bu sanal ana bilgisayarı kullanacağım
  • <Virtualhost *:*> with Servername foo.com "bu ana bilgisayarda yönetilen tüm IP'lerde", "tüm bağlantı noktalarında", "istek ana bilgisayar başlığı foo.com ise", bu sanal ana bilgisayarı kullanacağım
  • <Virtualhost 10.0.0.2:*> with Servername foo.com "10.0.0.2 ağ arayüzümden gelen istek için", "tüm bağlantı noktalarında", "istek ana bilgisayar başlığı foo.com ise", bu sanalhost kullanacağım
  • <Virtualhost _default_:*> with Servername foo.com : isme dayalı sanal ev sahibi ile kullanılmamalıdır

Ve bir IP tabanlı Virtualhosting üzerinde:

  • <Virtualhost 10.0.0.2:*> "Bu sanalhost'u 10.0.0.2 arayüzüme gelen istek için kullanacağım" anlamına geliyor
  • <Virtualhost _default_:443> "Bu sanal ana bilgisayarı, 443 numaralı bağlantı noktasına gelen istek için ana bilgisayarımdaki diğer ağ arabirimleri için kullanacağım"
  • <Virtualhost _default_:*> "Bu virtualhost'u ana bilgisayarımdaki diğer tüm ağ arayüzleri için kullanacağım, önceki bir kuralla eşleşmiyorsa ve istek ana bilgisayar başlığı bir adlandırılmış tabanlı sanalhost tarafından eşleştirilmezse" anlamına gelir

Yani hepsi bir hepsini yakalayan Virtualhost tanımlamakla ilgili. Belgeler ekler:

IP tabanlı sanal barındırma kullanırken, özel ad _default_belirtilebilir; bu durumda bu sanal ana bilgisayar, açıkça başka bir sanal ana bilgisayarda listelenmeyen herhangi bir IP adresiyle eşleşir. Herhangi bir _default_sanal ana bilgisayarın yokluğunda, herhangi bir VirtualHost bölümü dışındaki tüm tanımlardan oluşan "main" server config, IP eşleşmesi olmadığında kullanılır. (Ancak, bir NameVirtualHost yönergesine uyan herhangi bir IP adresinin ne "ana" sunucu yapılandırmasını ne de _default_sanal ana bilgisayarı kullanacağını unutmayın . Daha fazla ayrıntı için ad tabanlı sanal barındırma belgelerine bakın.)

Bu nedenle, tüm tezlerden sonra, IP tabanlı ve ad tabanlı sanal barındırma işleminin karışıklık yaratabileceği oldukça açık bir şekilde ortaya çıkıyor. Apache 2.2 ile Ad tabanlı sanal ana bilgisayar yalnızca NameVirtualhost <something>kullanıldıysa kullanıldı.

Ancak yeni Apache 2.4 versiyonuyla tezlerin anlaşılması gerçekten daha kolay, NameVirtualhostbeyan yok . NameVirtualHost yönergesi artık bir uyarı vermek dışında hiçbir etkiye sahip değildir. Birden fazla sanal ana bilgisayarda görünen herhangi bir adres / bağlantı noktası birleşimi tam olarak ad tabanlı bir sanal ana bilgisayar olarak kabul edilir . Artık karmaşık düşünceler yok, belgeler artık daha basit:

  • Joker karakter görevi gören ve herhangi bir IP adresiyle eşleşen karakter *.
  • _default_Bir takma ad olan dize *

Yani apache 2.4 ile cevap, aynı şey .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.