_default_
vhosts ServerPath
Configuration du serveur:
... Port 80 DocumentRoot /www/domain ServerName www.domain.tld <VirtualHost 111.22.33.55> DocumentRoot /www/otherdomain ServerName www.otherdomain.tld ... </VirtualHost>
www.otherdomain.tldne peut être atteint qu'à l'aide de l'adresse 111.22.33.55, alors que www.domain.tld ne peut être atteint qu'à l'aide de l'adresse 111.22.33.44 ( celle-ci représente notre serveur principal ).
Configuration du serveur:
... 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>
Le serveur principal ne recevra jamais de requêtes, car toutes les adresses IP de notre machine sont utilisées pour des hôtes virtuels définis sur adresse IP (seules des requêtes locales localhost peuvent atteindre le serveur principal).
Installation 3: La machine serveur dispose de deux adresses IP (111.22.33.44 et 111.22.33.55) auxquelles sont rattachés les noms server.domain.tld et www- cache.domain.tld . Le nom de l'hôte, www.domain.tld , est un alias (CNAME) pour server.domain.tld et représentera le serveur principal. www-cache.domain.tld devient le serveur d'écoute proxy sur le port 8080, alors que le serveur Web utilise le port par défaut 80.
Configuration du serveur :
... 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>
Le serveur principal ne peut jamais répondre à une requête, car toutes les adresses IP ( à part celles de localhost) de votre machine sont utilisées pour les hôtes virtuels basés sur les adresses IP. Le serveur web peut être seulement atteint sur la première adresse par le port 80 et le proxy sur la seconde adresse par le port 8080.
Configuration du serveur:
... 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>
A part localhost , il n'y a pas de combinaison adresse/port non spécifiées, c'est la raison pour laquelle le serveur principal ne prend en compte que les requêtes de localhost. Comme www.domain.tld a la priorité, il peut être considéré comme le serveur primaire par défaut .
Configuration du serveur:
... 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>
Toute requête envoyée à une adresse autre
que 111.22.33.55 sera prise en compte par le serveur principal.
Une requête adressée à 111.22.33.55
mentionnant un champ d'en-tête Host:
avec une valeur
inconnue ou autre que le serveur principal sera prise en compte par
www.otherdomain.tld.
Configuration du serveur:
... 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>
Configuration du serveur:
... Listen 80 Listen 8080 ServerName www.domain.tld DocumentRoot /www/domain <VirtualHost 111.22.33.44:8080> DocumentRoot /www/domain2 ... </VirtualHost>
Une requête adressée à www.domain.tld sur le port 80 est prise en compte par le serveur principal, et une requête adressée au port 8080 est prise en compte par l'hôte virtuel.
_default_
Configuration du serveur:
... <VirtualHost _default_:*> DocumentRoot /www/default ... </VirtualHost>
Utiliser un tel serveur par défaut avec un tel metaport
déroute effectivement toutes les requêtes allant au serveur principal. Un
hôte virtuel par défaut ne prend jamais en compte une
requête qui a été envoyée à un hôte
virtuel défini sur une combinaison adresse/port, laquelle peut
être associée à un hôtes virtuels nommé. Si le
champ host:
de la requête mentionne un hôte inconnu ou un
autre hôte, celle-ci sera toujours prise en compte par le premier
hôte virtuel nommé pour cette paire adresse/port (le premier
hôte virtuel nommé qui apparait dans le fichier de configuration
pour cette combinaison adresse/port). Vous pouvez utiliser AliasMatch ou RewriteRule pour
réécrire toute requête visant une page d'information (ou
script).
_default_
pour le port 80.Configuration du serveur:
... <VirtualHost _default_:80> DocumentRoot /www/default80 ... </VirtualHost> <VirtualHost _default_:*> DocumentRoot /www/default ... </VirtualHost>
L'hôte virtuel par défaut pour le port 80 ( lequel doit apparaître avant tout hôte virtuel par défaut avec un metaport) prend en compte toutes les requêtes qui ont été envoyées à une adresse IP non spécifiée. Le serveur principal n'est jamais utilisé pour répondre à une requête.
Configuration du serveur:
... <VirtualHost _default_:80> DocumentRoot /www/default ... </VirtualHost>
Une requête envoyée à une adresse non spécifiée sur le port 80 est prise en charge par l' hôte virtuel par défaut. Toute autre requête envoyée à une adresse et unport non définis est prise en charge par le serveur principal.
VirtualHost
.Configuration du serveur:
... Port 80 ServerName www.domain.tld DocumentRoot /www/domain NameVirtualHost 111.22.33.55 <VirtualHost 111.22.33.55 111.22.33.66> 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>
Vous pouvez maintenant accéder à l'hôte virtuel par la nouvelle adresse (comme un hôte virtuel basé sur adresse IP ) et par l'ancienne adresse (comme un hôte virtuel nommé).
ServerPath
Host:
header
correcte. Les anciens clients HTTP/1.0 ne doivent pas envoyer un tel header et
Apache n'a pas d'information sur l' hôte virtuel que le client essayait
d'atteindre ( et prend en compte la requête du premier hôte virtuel
). Pour fournir autant de backward compatibility que possible vous devez
créer un premier hôte virtuel, lequel retourne une seule page
contenant des liens avec un préfixe URL aux hôtes virtuels
basés sur le nom.Configuration du serveur:
... 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>
A cause de la directive ServerPath, un requête faite à l'URL http://www.sub1.domain.tld/sub1/ est toujours prise en charge par l' hôte virtuel sub1 ( sub1-vhost ). Une requête adressée à l ' URL http://www.sub1.domain.tld/ n'est prise en compte que par l'hôte virtuel sub1 si le client envoie un hôte virtuel correcteHost:
header. S'il n'y a pas d'hôte virtuelHost:
header is sent le client obtient la page d'information du premier hôte virtuel. Remarquez qu'il y a une bizzarerie: Une requête à l 'URL http://www.sub2.domain.tld/sub1/ est aussi prise en compte par l'hôte virtuel sub1-vhost si le client n'a pas envoyé d'hôte virtuelHost:
header.
Les directivesRewriteRule
sont utilisée pour être sûr qu'un client qui a envoyé un hôte virtuel correcteHost:
header, peut utiliser également les variantes d 'URL , c'est à dire avec ou sans préfixe d 'URL.
Adaptation française : Yael
Leblanc / Promo 2000
Sous la direction de : Valery Fremaux / EISTI
1998