Création d'un virtualhost Apache2¶

Informations¶
- Auteur : Louis MEDO
- Date : 16/10/2026
- Domaine : Exploitation service
1. Sommaire¶
2. Contexte¶
Un VirtualHost permet d'héberger plusieurs sites web sur une seule IP. Le serveur web aiguille la requête via l'en-tête ServerName.
Sous Debian 13, les configurations sont dans /etc/apache2/sites-available/. Cette procédure intègre PHP-FPM, la redirection HTTPS automatique avec certificats TLS, et la sécurisation par VirtualHost. Les directives (comme AllowOverride pour le .htaccess) et les fichiers sensibles (comme les mots de passe) sont strictement isolés dans des dossiers dédiés à chaque site pour éviter une application globale ou une compromission croisée.
3. Prérequis¶
3.1. Activation des modules requis. Modules pour le proxy FPM, l'authentification, le contrôle d'accès et le TLS.
sudo a2enmod proxy_fcgi setenvif auth_basic authn_file authz_host ssl rewrite
sudo systemctl restart apache2
proxy_fcgi: Transfère les requêtes à PHP-FPM.auth_basic/authn_file/authz_host: Gèrent l'authentification HTTP et le filtrage IP.ssl: Active la prise en charge du protocole HTTPS (TLS).rewrite: Permet la manipulation des URL (indispensable pour les redirections et les permaliens WordPress).
4. Modèles de configuration¶
4.1. Configuration WordPress avec Redirection HTTPS et TLS. Ce modèle redirige le trafic non sécurisé vers HTTPS et configure l'exécution FPM.
Isolation du .htaccess
On applique la directive AllowOverride All uniquement au <Directory /var/www/<fqdn>> spécifique de ce VirtualHost. Cela garantit que l'interprétation des .htaccess est strictement limitée au dossier du site et n'est pas activée de façon globale sur le serveur.
Créer le fichier de configuration :
Exemple de configuration :
<VirtualHost *:80>
ServerName <sous-domaine>.dortmund.cub.sioplc.fr
# Redirection permanente de tout le trafic HTTP vers HTTPS
Redirect permanent / https://<sous-domaine>.dortmund.cub.sioplc.fr/
</VirtualHost>
<VirtualHost *:443>
ServerName <sous-domaine>.dortmund.cub.sioplc.fr
ServerAlias dortmund.cub.sioplc.fr
DocumentRoot /var/www/<fqdn>
# Configuration TLS
SSLEngine on
SSLCertificateFile /etc/ssl/certs/moncertificat.crt
SSLCertificateKeyFile /etc/ssl/private/macleprivee.key
ErrorLog ${APACHE_LOG_DIR}/<sous-domaine>_error.log
CustomLog ${APACHE_LOG_DIR}/<sous-domaine>_access.log combined
# Isolation du répertoire pour autoriser le .htaccess localement
<Directory /var/www/<fqdn>>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Redirect permanent /: Renvoie un code HTTP 301 pour forcer le navigateur à utiliser l'URL en HTTPS.SSLEngine on: Active le chiffrement TLS pour ce VirtualHost spécifique.SSLCertificateFile/SSLCertificateKeyFile: Définissent les chemins absolus vers le certificat public et la clé privée du site.
4.2. Configuration filtrage IPv4 et auth basic.
Sécurité des mots de passe
Le fichier d'authentification ne doit jamais être placé dans un dossier partagé. Créez un sous-dossier dédié au VirtualHost hors du DocumentRoot (ex: /etc/apache2/auth/<sous-domaine>/).
Créer le fichier de configuration :
Exemple de configuration sécurisée TLS :
<VirtualHost *:80>
ServerName <sous-domaine>.dortmund.cub.sioplc.fr
# Redirection permanente de tout le trafic HTTP vers HTTPS
Redirect permanent / https://<sous-domaine>.dortmund.cub.sioplc.fr/
</VirtualHost>
<VirtualHost *:443>
ServerName <sous-domaine>.dortmund.cub.sioplc.fr
DocumentRoot /var/www/<fqdn>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/moncertificat.crt
SSLCertificateKeyFile /etc/ssl/private/macleprivee.key
<Directory /var/www/<fqdn>>
Options -Indexes
AllowOverride None
<RequireAll>
# Filtrage IPv4
Require ip 192.168.1.0/24 10.0.0.0/8
# Authentification ciblée sur un fichier dédié au site
AuthType Basic
AuthName "Accès restreint"
AuthUserFile /etc/apache2/auth/<sous-domaine>/.htpasswd
Require valid-user
</RequireAll>
</Directory>
</VirtualHost>
Options -Indexes: Désactive le listing du contenu si aucun fichier d'index (ex:index.php) n'est présent.<RequireAll>: Oblige la validation conjointe des conditions (bonne IP ET mot de passe correct).AuthUserFile: Cible le fichier.htpasswdisolé spécifiquement pour ce site.
5. Déploiement¶
5.1. Génération du dossier dédié et du fichier de mots de passe.
sudo mkdir -p /etc/apache2/auth/<sous-domaine>/
sudo htpasswd -c /etc/apache2/auth/<sous-domaine>/.htpasswd <utilisateur>
mkdir -p: Crée l'arborescence de répertoires parentale dédiée au site de manière silencieuse.htpasswd -c: Crée le fichier chiffré contenant les identifiants (-cpour "create").<utilisateur>: Identifiant de l'utilisateur ajouté.
5.2. Activation du VirtualHost. Application de la configuration au serveur en production.
a2ensite: Active le VirtualHost en créant le lien symbolique desites-availableverssites-enabled.apache2ctl configtest: Valide la syntaxe des fichiers de configuration Apache avant application.systemctl reload: Applique les nouveaux paramètres en douceur sans interrompre les connexions TCP actives.