Ceci est une ancienne révision du document !
Configuration d'un serveur web avec Apache
Installation d'Apache
Création de site virtuels (vhosts)
Sur un serveur web, les sites virtuels ou virtual hosts (vhosts) permettent d'héberger sur la même machines différents sites web avec des noms de domaines et d'autres paramètres qui leur sont propres (certificats SSL, réécriture d'URL, répertoire cible, etc…).
Sous Apache, tous les vhosts sont stockés dans le répertoire /etc/apache2/sites-available sous forme de fichiers texte. La commande a2ensite permet d'activer ces vhosts et de les publier. Une fois un vhost activé, un lien symbolique vers le fichier correspondant est créé dans le répertoire /etc/apache2/sites-enabled. La commande inverse permettant de désactiver un vhost (et donc de supprimer le lien symbolique dans sites-enabled) est a2dissite.
Rien n'empêche l'administrateur de créer directement ses vhosts dans le répertoire
sites-enabled, mais par convention, il est préférable de d'abord créer le vhost dans sites-available, puis de l'activer afin qu'il apparaisse dans sites-enabled.
Imaginons que l'on doivent publier un site web répondant à l'adresse test.fr.
Commencer par créer un nouveau vhost sur le serveur où est installé apache :
nano /etc/apache2/sites-available/test.fr.conf
Ne pas oublier l'extension
.conf du fichier.
Puis y insérer ces premières directives :
<VirtualHost *:80> #rendre le site accessible par toutes les adresse IP sur serveur sur le port 80
ServerName test.fr #nom de domaine principal du site
ServerAlias www.test.fr #nom de domaine secondaire
ServerAdmin admin@test.fr #mail de contact administrateur
DocumentRoot /var/www/test #répertoire cible à publier
</VirtualHost>
Et voilà ! Le site Web test.fr est configuré, il n'y a plus qu'a l'activer pour le rendre accessible. Mais ce n'est pas tout, on pourra pas la suite activer des fonctions supplémentaires, affiner les permissions d'accès au site, et bien d'autres choses.
Explication :
<VirtualHost *:80>et</VirtualHost>permettent de délimiter les lignes qui servent à la configuration du vhost dans le fichier. On remarquera le*:80qui indique au serveur l'adresse IP et le port affectés au site web. Dans cet exemple, le site est accessible depuis toutes les adresses IP du serveur avec le port TCP 80 (*signifie toutes les adresses et80est le port de transport).ServerNamedéfinit le nom d'hôte du site, c'est-à-dire le nom de domaine qui sera utilisé pour le joindre.ServerAliasoffre la possibilité de définir des noms de domaines supplémentaires au site, et peut être utilisé plusieurs fois dans le même fichier.ServerAdminne sert qu'a spécifier l'adresse e-mail de l'administrateur pour des raisons techniques et n'est pas important.DocumentRootindique au serveur le répertoire cible du site web (où sont stockés les fichiers du site web). Par défaut, ils sont stockés dans/var/www/.
Appliquer des réglages uniquement à un répertoire spécifique
Pour ce faire, on utilise les balises <Directory /chemin/repertoire> et </Directory> entre lesquelles on insère les directives à appliquer au répertoire.
Attention à bien remplacer
/chemin/repertoire par le répertoire où l'on souhaite définir les réglages.
Exemple :
<Directory /web/site1> #Les réglages ci-dessous s'appliquent uniquement au répertoire /web/site1
Options All
AllowOverride all
Require all granted
</Directory>
Ensuite, l'activation du vhost se fait comme ceci :
a2ensite test.fr.conf
Sans oublier de relancer le service Apache2 afin d'appliquer les réglages :
service apache2 restart
Ou bien avec :
apache2ctl restart
Pour vérifier que les fichiers de configuration des vhosts soient fonctionnels, on peut exécuter la commande suivante, qui va lister les erreurs trouvées :
apache2ctl -t
Enfin pour désactiver le site virtuel, afin de modifier ses paramètres par exemple, faire :
a2dissite test.fr.conf
Sans oublier de relancer le service apache pour appliquer.
Sécurisation du serveur web
Interdire le listing des répertoires web
Mettre en place SSL (HTTPS)
Activer l'en-tête HSTS
Redirection HTTP/HTTPS via Apache mod_proxy
Activer le module Proxy d'Apache :
a2enmod proxy proxy_http
Relancer le serveur pour initialiser les modules :
service apache2 restart
Créer un hôte virtuel (virtual hosts) dans /etc/apache2/sites-enabled/ :
nano /etc/apache2/sites-enabled/test.conf
Y ajouter ces lignes :
<VirtualHost *:80>
ServerName nocterie.fr
ProxyPass /site1 http://nocterie.fr/site2
ProxyPassReverse /site1 http://nocterie.fr/site2
ProxyRequests Off
</VirtualHost>
Redémarrer Apache et c'est gagné !
Les directives ProxyPass et ProxyPassReverse indiquent l'URL du proxy à rediriger vers l'URL de la page Web (le / au début des deux lignes correspond à la racine Web du proxy Apache)
L'option ProxyRequests permet d'activer le mode mandataire direct afin d'ajouter des restrictions d'accès ou des règles de redirection supplémentaires. Si cette fonction n'est pas utilisée, il est recommandé de la désactiver.
L'exemple ci-dessus redirige le site nocterie.fr/site1 vers le second site nocterie.fr/site2. Utile pour balader les utilisateurs sur le nouveau site !
Pour les redirections HTTPS : Ajouter la ligne
SSLProxyEngine On