ot Bondoff(10-12-2003)
reiting (19)
[ dobre ]
[ zle ]
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 >>
|