_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 directivesRewriteRulesont 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