ot Bondoff(10-12-2003)

reiting (19)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Virtual Host primerni konfiguratsii
Osnovna konfiguratsiia

Prost name-based vhosting

   * Suvmestimost: Sintaksisut za nastroika se poddurzha ot Apache 1.3.13.
   * Nastroika: Da predpolozhim, che survurut, na koito shte se napraviat virtualnite hostove  ima domein: server.domain.tld. SHTe triabva da se napraviat dva psevdonima (aliases)  www.domain.tld i www.sub.domain.tld za IP adresut na koito e registriran server.domain.tld.

     Konfiguratsiia na survura:

   ...
   Port 80
   ServerName server.domain.tld

   NameVirtualHost *

   <VirtualHost *>
   DocumentRoot /www/domain
   ServerName www.domain.tld
   ...
   </VirtualHost>

   <VirtualHost *>
   DocumentRoot /www/subdomain
   ServerName www.sub.domain.tld
   ...
   </VirtualHost>


         Zvezdichkata oznachava vsichki adresi. Kakto se vizhda v primera www.domain.tld e osnovniiat host, zashtoto e purvi v spisuka. Tozi primer e polezen za chastni mrezhi, kudeto niama nuzhda ot ofitsialna registratsiia na domein. Razbira se virtualnite hostove shte sa dostupni samo za chastnata mrezha.

Malko po-slozhen virtualen host - name-based vhost

   * Variant 1: Survurnata mashina ima samo edin IP adres (111.22.33.44), koito otgovaria na server.domain.tld. Otnovo shte suzdadem dva psevdonima za virtualni hostove, a imenno www.domain.tld  i www.sub.domain.tld za adresut 111.22.33.44.

     Konfiguratsiia na survura:

   ...
   Port 80
   ServerName server.domain.tld

   NameVirtualHost 111.22.33.44

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/domain
   ServerName www.domain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/subdomain
   ServerName www.sub.domain.tld
   ...
   </VirtualHost>


         V sluchaia www.domain.tld otnovo e default ili primary survur.

   * Variant 2: Survurnata mashina ima dva IP adresa (111.22.33.44 i 111.22.33.55) koito suotvetstvat na imenata server1.domain.tld i server2.domain.tld. Psevdonimut (alias) www.domain.tld triabva da se izpolzva ot survura, koito sushto taka triabva da prehvashta vsichki nespetsifitsirani adresi. SHTe konfigurirame virtualni hostove s psevdonimi www.otherdomain.tld i drug virtualen host s ime www.sub.domain.tld, koito shte prehvashta vsichki zaiavki kum hostove ot vida *.sub.domain.tld. Adresut 111.22.33.55 shte bude izpolzvan za virtualni hostove.

     Konfiguratsiia na survura:

   ...
   Port 80
   ServerName www.domain.tld
   DocumentRoot /www/domain

   NameVirtualHost 111.22.33.55

   <VirtualHost 111.22.33.55>
   DocumentRoot /www/otherdomain
   ServerName www.otherdomain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.55>
   DocumentRoot /www/subdomain
   ServerName www.sub.domain.tld
   ServerAlias *.sub.domain.tld
   ...
   </VirtualHost>


         Vsichki zaiavki kum adres, razlichen ot 111.22.33.55, shte budat obsluzhvani ot glavniia survur. Zaiavkite kum  111.22.33.55, koito idvat s nepoznat host ili bez host-chast  shte budat prenasochvani kum www.otherdomain.tld.

   * Variant 3: Survura ima dva IP adresa, no ediniiat e oblastta na "chastni" IP adresi (192.168.1.1 and 111.22.33.55). Tezi ot vas, koito se zanimavat s administrirane na mrezhi, poznavat dosta dobre takiva konfiguratsii, za ostanalite shte spomenem, che tova sa survuri, koito igraiat rolia na "shlyuz" (gateway), mezhdu vutreshni, chastni, mrezhi i Internet. Imeto na survura - server1.domain.tld ot vunshni mrezhi e dostupno prez adresut 111.22.33.55, a ot vutreshnata mrezha - prez adresut 192.168.1.1.

     Survurut mozhe da bude konfiguriran da otgovaria na zaiavki kum edin i susht virtualen host kakto ot vunshni adresi, taka i ot vutreshnata mrezha.

     Konfiguratsiia na survura:

   ...
   NameVirtualHost 192.168.1.1
   NameVirtualHost 111.22.33.55

   <VirtualHost 192.168.1.1 111.22.33.55>
   DocumentRoot /www/server1
   ServerName server1.domain.tld
   ServerAlias server1
   ...
   </VirtualHost>



   * Variant 4: Da predpolozhim, che imate registriran edin IP adres, no za tozi adres ste registrirali dva domeina. Osven tova ste reshili da izpolzvate i razlichni portove za vseki ot domeinite vi. Tova stava lesno kato v chastta "NameVirtualHost IP address:port" definirate i porta. Oburnete vnimanie, che sushto taka e neobhodimo da ukazhete porta i v chastta <VirtualHost name:port> v protiven sluchai, konfiguratsiiata niama da raboti.

     Konfiguratsiia na survura:

   ...  
   NameVirtualHost 111.22.33.44:80
   NameVirtualHost 111.22.33.44:8080

   <VirtualHost 111.22.33.44:80>
   ServerName www.domain.tld
   DocumentRoot /www/domain-80
   </VirtualHost>

   <VirtualHost 111.22.33.44:8080>
   ServerName www.domain.tld
   DocumentRoot /www/domain-8080
   </VirtualHost>

   <VirtualHost 111.22.33.44:80>
   ServerName www.otherdomain.tld
   DocumentRoot /www/otherdomain-80
   </VirtualHost>

   <VirtualHost 111.22.33.44:8080>
   ServerName www.otherdomain.tld
   DocumentRoot /www/otherdomain-8080
   </VirtualHost>



IP-bazirani virtualeni hostove

   * Variant 1: Survura ima dva IP adresa (111.22.33.44 i 111.22.33.55), koito suotvetstvat na domeinite server.domain.tld i www.otherdomain.tld. Iskame  www.domain.tld da bude psevdonim za server.domain.tld.

     Konfiguratsiia na survura:

   ...
   Port 80
   DocumentRoot /www/domain
   ServerName www.domain.tld

   <VirtualHost 111.22.33.55>
   DocumentRoot /www/otherdomain
   ServerName www.otherdomain.tld
   ...
   </VirtualHost>


         www.otherdomain.tld e dostupen prez adresut 111.22.33.55, dokato www.domain.tld mozhe da bude dostignat edinstveno prez 111.22.33.44  (main server).

   * Variant 2: Sushto kakto pri variant 1, no bez psevdonim za glavniia survur.

     Server configuration:

   ...
   Port 80
   ServerName server.domain.tld

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/domain
   ServerName www.domain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.55>
   DocumentRoot /www/otherdomain
   ServerName www.otherdomain.tld
   ...
   </VirtualHost>


         Survura ne mozhe da bude dostignat priako prez nito edin ot virtualnite hostove, tui kato i dvata IP adresa sa zapazeni za tiah. Dostupa do glavniia survur mozhe da stane edinstveno prez localhost.

   * Variant 3: Survura ima dva IP adresa (111.22.33.44 i 111.22.33.55), koito otgovariat na domeinite server.domain.tld i www-cache.domain.tld. Hosta www.domain.tld e psevdonim za server.domain.tld i shte bude glaven survur. www-cache.domain.tld shte bude nashiia proksi-kesh (proxy-cache), koito shte slusha na port 8080, dokato ueb survura shte bude dostupen prez port 80.

Konfiguratsiia na survura:

   *

...
   Port 80
   Listen 111.22.33.44:80
   Listen 111.22.33.55:8080
   ServerName server.domain.tld

   <VirtualHost 111.22.33.44:80>
   DocumentRoot /www/domain
   ServerName www.domain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.55:8080>
   ServerName www-cache.domain.tld
   ...
     <Directory proxy:>
     Order Deny,Allow
     Deny from all
     Allow from 111.22.33
     </Directory>
   </VirtualHost>


         Glavniia survur nikoga niama da prieme zaiavka, tui kato vsichki IP adresi (bez localhost) se izpolzvat ot IP-bazirani virtualni hostove. Ueb survura mozhe da bude dostignat ot purviiat adres prez port 80, a proksi-kesh survura - na vtoriiat adres prez port 8080.

Smeseni name-/IP-bazirani virtualni hostove

   * Nastroika: Survura ima tri IP adresa (111.22.33.44, 111.22.33.55 i 111.22.33.66), na koito sa registrirani suotvetno server.domain.tld, www.otherdomain1.tld i www.otherdomain2.tld. Adresut 111.22.33.44 shte bude izpolzvan za  name-based virtualen host, a ostanalite - za IP-based vhosts.

     Konfiguratsiia na survura:

   ...
   Port 80
   ServerName server.domain.tld

   NameVirtualHost 111.22.33.44

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/domain
   ServerName www.domain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/subdomain1
   ServerName www.sub1.domain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/subdomain2
   ServerName www.sub2.domain.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.55>
   DocumentRoot /www/otherdomain1
   ServerName www.otherdomain1.tld
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.66>
   DocumentRoot /www/otherdomain2
   ServerName www.otherdomain2.tld
   ...
   </VirtualHost>    


Port-baziran virtualen host

   * Nastroika: Survura ima edin IP adres (111.22.33.44), otgovariasht na domeina www.domain.tld.

     Konfiguratsiia na survura:

   ...
   Listen 80
   Listen 8080
   ServerName www.domain.tld
   DocumentRoot /www/domain

   <VirtualHost 111.22.33.44:8080>
   DocumentRoot /www/domain2
   ...
   </VirtualHost>


         Zaiavkite kum www.domain.tld na port 80 shte budat prieti ot glavniia survur (/www/domain). Zaiavkite kum www.domain.tld na port 8080 shte budat prenasocheni kum virtualniiat host (/www/domain2).

Izpolzvane na  _default_ virtualen host

   * Variant 1: Vuzpriema vsiaka zaiavka kum vseki neukazan IP adres i port, t.e. adres/port kombinatsiia, koiato ne se izpolzva za drugi virtualni hostove.

     Konfiguratsiia na survura:

   ...
   <VirtualHost _default_:*>
   DocumentRoot /www/default
   ...
   </VirtualHost>


   * Variant 2: Sushto kakto pri variant1, no survura shte slusha na niakolko porta i shte izpolzvame vtori  _default_ virtualen host na port 80.

     Konfiguratsiia na survura:

   ...
   <VirtualHost _default_:80>
   DocumentRoot /www/default80
   ...
   </VirtualHost>

   <VirtualHost _default_:*>
   DocumentRoot /www/default
   ...
   </VirtualHost>    


         Virtualniiat host po podrazbirane (The default vhost) za port 80 (koito triabva da se vizhda predi drugite  _default_ hostove s  wildcard port) priema zaiavki, koito ne sa kum ukazan IP adres. Glavniiat survur niama da otgovaria na tezi zaiavki.

   * Variant 3: Iskame _default_ virtualen host na port 80, bez dopulnitelni _default_ virtualni hostove.

     Konfiguratsiia na survura:

   ...
   <VirtualHost _default_:80>
   DocumentRoot /www/default
   ...
   </VirtualHost>


         Zaiavka kum neukazan adres prez port 80 shte bude prenasochena kum _default_ hosta. Vsichki ostanali zaiavki kum  neukazani adresi na drugi portove shte budat prenasocheni kum glavniia survur.

Izpolzvane na direktivata ServerPath

   * Nastroika: Imame survur s konfigurirani dva name-based virtualni hosta. S ogled da se dostigne do pravilniiat virtualen host, klientut podal zaiavkata, triabva da podade pravilno host-ime. Starite ueb brauzuri izpolzvashti   HTTP/1.0 klienti ne podavat pravilno "header" chastta i Apache ne mozhe da razbere kum koi tochno virtualen host da prenasochi zaiavkata (i zatova ia prenasochva kum purviia virtualen host). Tozi problem se reshava lesno kato suzdadete  prosta ueb-stranitsa s pulniiat (i pravilen) tekst na linkovete kum suotvetnite virtualni hostove.

     Konfiguratsiia na survura:

   ...
   NameVirtualHost 111.22.33.44

   <VirtualHost 111.22.33.44>
   # primary vhost
   DocumentRoot /www/subdomain
   RewriteEngine On
   RewriteRule ^/.* /www/subdomain/index.html
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/subdomain/sub1
   ServerName www.sub1.domain.tld
   ServerPath /sub1/
   RewriteEngine On
   RewriteRule ^(/sub1/.*) /www/subdomain$1
   ...
   </VirtualHost>

   <VirtualHost 111.22.33.44>
   DocumentRoot /www/subdomain/sub2
   ServerName www.sub2.domain.tld
   ServerPath /sub2/
   RewriteEngine On
   RewriteRule ^(/sub2/.*) /www/subdomain$1
   ...
   </VirtualHost>


         S direktivata  ServerPath  se garantira, che vsichki zaiavki ot tipa http://www.sub1.domain.tld/sub1/ shte budat prenasochvani kum virtualniiat host sub1.
         Zaiavka kum http://www.sub1.domain.tld/ shte bude prenasochena kum sub1 edinstveno ako klienta e podal pravilno chastta "Host: header". Ako ne e podadena pravilno, tia shte bude prenasochena kum suzdadenata ot vas ueb stranitsa /www/subdomain/index.html.
         Molia otbelezhete, slednata osobenost: Zaiavka kum  http://www.sub2.domain.tld/sub1/ sushto shte bude prenasochena kum virtualniiat host sub1 ako klienta vuobshte ne podade chastta  "Host: header".
         Direktivata RewriteRule se izpolzva za da mozhe klientite koito podavat korektni zaiavki, da izpolzvat  i dvata URL varianta, t.e. sus ili bez URL prefiks.


<< Ogranichavane na trafika | Izpolzvane na internet i multimediini klaviaturi pod Linux >>