Voici le contenu du fichier "default" (qui apparemment était deja un virtualhost
mais par adresse IP),
Je lui ai rajouter la directive "NameVirtualHost"
et j'ai fixé la directive "ServerName" a "verseau.athena.home".
Les requètes des clients web, appellant le serveur "verseau.athena.home"
subissent les directives de la configuration ci-dessous: DocumentRoot etc..
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName verseau.athena.home
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /verseau/
</Directory>
<Directory /var/www/verseau>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /var/www/dotclear>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 192.168.0.0/24
</Directory>
</VirtualHost>
Voici le contenu du fichier "virtual" (je ne rajoute pas de directive "NameVirtualHost"
celle ci etant deja présente dans le site "default").
Le "ServerName" est ici "virtual.athena.home", qui correspond a un enregistrement
DNS de type CNAME (alias) pointant vers le nom "officiel" du serveur (verseau.athena.home).
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName virtual.athena.home
DocumentRoot /var/www/test/
<Directory /var/www/test>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
- L'étoile de la directive "NameVirtualHost *" indique au serveur d'ecouter les requetes sur toutes
les adresses IP du serveur.
- Pareil pour la balise <VirtualHost *>
LE PIEGE
- Il faut bien sur taper le nom DNS pleinement qualifié dans le navigateur web
s'y il a été ainsi renseigner dans la directive ServerName du virtualhost.
En gros si moi je tape "http://virtual" dans mon navigateur internet, le DNS me fera
pointé vers l'adresse par défaut de mon serveur web, alors que si je tape "http://
virtual.athena.home", le serveur apache saura que cela concerne le virtualhost
"virtual.athena.home", donc il faut une correspondance précise entre "servername" et
enregistrement DNS.
Les images valent plus que les mots:
PAS BIEN
BIEN
La configuration mise en place peut etre tester avec la commande "apache2 -S"
voici son résultat:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:* is a NameVirtualHost
default server verseau.athena.home (/etc/apache2/sites-enabled/000-default:2)
port * namevhost verseau.athena.home (/etc/apache2/sites-enabled/000-default:2)
port * namevhost virtual.athena.home (/etc/apache2/sites-enabled/virtual:3)
Syntax OK
Pour info voici le contenu de la zone DNS "athena.home.zone"
$TTL 2D
athena.home. IN SOA verseau.athena.home. root.localhost. (
1999092901 ; serial
1D ; refresh
2H ; retry
1W ; expiry
2D ) ; minimum
athena.home. IN NS verseau.athena.home.
athena.home. IN MX 10 verseau.athena.home.
akira IN A 192.168.0.4
verseau IN A 192.168.0.3
bling IN A 192.168.0.2
athena IN A 192.168.0.1
pop.athena.home. IN CNAME verseau.athena.home.
imap.athena.home. IN CNAME verseau.athena.home.
smtp.athena.home. IN CNAME verseau.athena.home.
www.athena.home. IN CNAME verseau.athena.home.
virtual IN CNAME verseau.athena.home.