Apache HTTP Server — mise en place d'un VirtualHost, configuration htaccess avec authentification, gestion des utilisateurs et modules X-Forwarded-For.
Sur Debian / Ubuntu, installez le paquet depuis les dépôts officiels :
sudo apt update
sudo apt install apache2 -y
Vérifier que le service est actif :
sudo systemctl status apache2
Le fichier de configuration par défaut se trouve ici :
/etc/apache2/sites-available/000-default.conf
Créez votre propre fichier de configuration à partir du modèle :
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mon-site.conf
sudo nano /etc/apache2/sites-available/mon-site.conf
Exemple de VirtualHost complet avec authentification htaccess et support X-Forwarded-For (pour LXC/Nginx) :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# X-Forwarded-For — uniquement si derrière un reverse proxy (LXC/Nginx)
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1
RemoteIPTrustedProxy ip_du_reverse_proxy
<Directory "/var/www/html/">
AuthName "Connexion_au_Panel"
AuthType Basic
AuthUserFile /chemin/absolu/vers/mes.mdp
Require valid-user
</Directory>
</VirtualHost>
Activer votre site et désactiver le site par défaut :
sudo a2ensite mon-site.conf
sudo a2dissite 000-default.conf
Créez le fichier de mots de passe avec le premier utilisateur :
echo user:$(mkpasswd mdp_de_user) > mes.mdp
mkpasswd est introuvable, installez le paquet whois qui la fournit :
sudo apt install whois -y
Pour ajouter des utilisateurs supplémentaires au fichier (sans l'écraser) :
# Le double >> ajoute à la suite sans écraser le fichier existant
echo user2:$(mkpasswd mdp_de_user2) >> mes.mdp
mes.mdp doit correspondre exactement à la valeur
de AuthUserFile dans votre VirtualHost. Utilisez un chemin absolu.
Si vous utilisez le support X-Forwarded-For, activez les modules nécessaires :
# Activer les modules requis pour X-Forward, réécriture et headers
sudo a2enmod rewrite remoteip headers
Après toute modification, redémarrez Apache pour appliquer les changements :
sudo systemctl restart apache2
Pour tester la syntaxe de la configuration avant de redémarrer :
sudo apache2ctl configtest
apache2ctl configtest avant de redémarrer le service
pour s'assurer qu'il n'y a pas d'erreur de syntaxe dans vos fichiers .conf.
Options -Indexes
dans votre bloc <Directory> pour éviter d'exposer le contenu de vos dossiers.