HOME -> APACHE -> apache-03 Lørdag, 21. Oktober 2017

HOME
FORUM
OPEN DIRECTORY
BOOKMARK
Offentliggjort 2003 - Opdateret n/a

Apaches vhosts - Name-based Virtual Hosts

I forbindelse med Apache web-serveren er der mulighed for at anvende Name-based Virtual Hosts (Flere domæner under samme IP-adresse) eller IP-based Virtual Hosts (Anvender en IP-adresse pr. web site).
Denne artikel beskæftiger sig med førstnævnte, nemlig Name-based Virtual Hosts.

Indhold

 

TopKort om "IP-based Virtual Hosts"
Allerede navnet IP-based Virtual Hosts indikerer at serveren skal have forskellige IP-adresser for hver IP-baserede virtuelle host.
Dette kan imødekommes ved at serveren har flere fysiske netværks forbindelser, eller ved at anvende virtuelle grænseflader, der eftehånden understøttes af de fleste moderne styresystemmer.

 

Top"Name-based Virtual Hosts"
Name-based Virtual Hosts eller på dansk navne baserede virtuelle hosts, eller kort og godt vhosts kaldes også for non-IP-Virtual-Host. Kært barn har mange navne! ;-)

Vhosts giver dig mulighed for at oprette flere domæner under samme IP-adresse. Hvilket er temmelig smart hvis du er den lykkelige ejer af flere domænenavne, men kun en IP-adresse.

Ved anvendelse af vhosts forventer serveren at klienten angiver host-navnet som en del af HTTP-headeren. Det er denne teknik der giver mulig for, at have flere domæner under samme IP-adresse.

Anvendelsen af navne baserede virtuelle hosts er som regel meget nemt. Man skal blot sørge for at DNS-serveren videresender samtlige domænenavne til en og samme IP-adresse. Efterfølgende er det Apaches opgave at skelne mellem de forskellig forespørgsler, om det er domain1 eller domain2 der skal sende et retursvar. Og hvem af domænerne der sender et retursvar afhænger af HTTP-headers indhold.

 

TopSyntaksen
Den mest basale syntaks for en vhost-blok er:


<VirtualHost *:80>
ServerName www.domain.dk
DocumentRoot /www/domain
</VirtualHost>


eller


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


eller


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


 

TopElementerne/directive i en vhosts blok!
For at kunne anvende name-based virtual hosting skal du angive hvilken IP-adresse og evt. port på serveren som denne skal svare på. Dette konfigureres via NameVirtualHost. Normalt kan dette angives med et * tegn.
I de tilfælde hor du kun ønsker at give adgang til en bestemt port kan dette angives ved *:80 (HTTP port).
Efterfølgende skal du angive en vhost-blok via <VirtualHost> for hver af dine domæner. IP-adressen i din <VirtualHost> blok bør være den samme som angivet i NameVirtualHost. Har du angivet wildcard (*) skal du angive denne I blokken.

Inde i blokken skal du som minimum angive ServerName der indeholder domæne navnet samt DocumentRoot som henviser til mappen hvor html-dokumenterne befinder sig.

Ved at angive ServerAlias kan din side tilgås med forskellige navne. Forstået på den måde at den kan tilgås med og uden www. For eksempel:


ServerAlias domain.dk *.domain.dk


Din DNS-server skal selvfølgelig være opsat til at understøtte dette.

Det som ikke bliver angivet i en vhost-blok vil automatisk komme ind under serverens default setting.

 

TopEksempel på virtuel hosts
Efterfølgende eksempel er taget direkte fra apachens httpd.conf filens Section 3: Virtual Hosts.
I eksemplet er der tilføjet et domæne der illustrerer konfigurationen af virtuelle hosts.

 



### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs-2.0/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost 111.22.33.44

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost 111.22.33.44>
  ServerName www.ditdomain.dk
  ServerAlias ditdomain.dk *.ditdomain.dk
  DocumentRoot /www/docs/ditdomain.dk
  DirectoryIndex index.htm index.html
  ServerAdmin webmaster@ditdomain.dk
  ErrorLog /logs/ditdomain.dk-error_log
  CustomLog /logs/ditdomain.dk-access_log

	<Directory "/www/docs/ditdomain.dk/">
	  Options ExecCGI Indexes Includes FollowSymLinks
	  AllowOverride None
	  Order deny,allow
	</Directory>

</VirtualHost>





Eksemplet siger stort set det hele. Jeg vil dog alligevel forsøge at gennemgå de enkelte elementer fra eksemplet:



NameVirtuelHost Directive:
Angiver en IP-adresse for name-virtual hosting.
<VirtualHost> Directive:
Indeholder direktiver der anvendes i forbindelse med specifik hostnavn eller IP-adresse.
ServerName Directive:
Domænenavn som serveren anvender til identifikation.
ServerAlias Directive:
Alternative navne som kan anvendes.
DocumentRoot Directive:
Hoved mappen hvorfra dokumenterne vises/hentes.
DirectoryIndex directive:
Dokument der vises når et domæne kaldes, index filen.
ServerAdmin:
E-mail adresse på administrator af serveren.
ErrorLog Directive:
Location/mappe hvor fejl gemmes i en log-fil.
CustomLog:
Location/mappe hvor access gemmes i en log-fil.

 

<Directory> Directive:
Indeholder en række direktiver gældende specifik for mappen.
Options: Hvad er tillad i den tilgængelige mappe.
ExecCGI: Udførelse af CGI scripts via "mod_cgi" er tilladt.

Indexes: Hvis f.eks. index.htm kaldes fra en mappe og denne ikke findes, vil en rod mappe blive vist i stedet for. "mod_autoindex" vil returnere en liste af mappens indhold.

Includes: Server-side includes via "mod_include" er tilladt.

FollowSymLinks: Serveren vil følge links i mappen.
AllowOverride Directive:
Hvad der er tilladt i .htaccess fil.
Order:
Kontrollere hvordan Allow og Deny bliver evalueret.
</Directory >:
Afslutter directory directive.

 

</VirtualHost>:
Afslutter VirtualHost directive.



 

Copyright © 2002 - 2017
NETeXplorer.dk · All rights reserved Top