{"id":315,"date":"2026-05-03T18:56:53","date_gmt":"2026-05-03T16:56:53","guid":{"rendered":"https:\/\/eryann.fr\/?p=315"},"modified":"2026-05-03T18:56:54","modified_gmt":"2026-05-03T16:56:54","slug":"fiche-virtual-host-apache-2-sous-debian-ubuntu","status":"publish","type":"post","link":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/","title":{"rendered":"Fiche virtual host Apache 2 sous Debian \/ Ubuntu"},"content":{"rendered":"\n<p>Les <strong>Virtual Hosts<\/strong> Apache permettent d\u2019h\u00e9berger plusieurs sites web sur un m\u00eame serveur.<\/p>\n\n\n\n<p>Ils permettent de g\u00e9rer :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- plusieurs sites sur une m\u00eame adresse IP<br>- plusieurs noms de domaine<br>- plusieurs sous-domaines<br>- des r\u00e9pertoires web diff\u00e9rents<br>- des logs s\u00e9par\u00e9s par site<br>- des configurations SSL diff\u00e9rentes<\/code><\/pre>\n\n\n\n<p>Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>site1.example.lan  \u2192 \/var\/www\/site1<br>site2.example.lan  \u2192 \/var\/www\/site2<br>blog.example.lan   \u2192 \/var\/www\/blog<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"1024\" src=\"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-683x1024.png\" alt=\"\" class=\"wp-image-316\" srcset=\"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-683x1024.png 683w, https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-200x300.png 200w, https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-768x1152.png 768w, https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png 1024w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Principe g\u00e9n\u00e9ral<\/h2>\n\n\n\n<p>Apache re\u00e7oit une requ\u00eate HTTP avec un nom de domaine dans l\u2019en-t\u00eate <code>Host<\/code>.<\/p>\n\n\n\n<p>Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Host: site1.example.lan<\/code><\/pre>\n\n\n\n<p>Apache compare ce nom avec les directives :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ServerName<br>ServerAlias<\/code><\/pre>\n\n\n\n<p>Puis il sert le bon site gr\u00e2ce au bon bloc :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site1.example.lan<br>    DocumentRoot \/var\/www\/site1<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Installation d\u2019Apache 2<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update<br>apt install apache2 -y<\/code><\/pre>\n\n\n\n<p>V\u00e9rifier le service :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status apache2<\/code><\/pre>\n\n\n\n<p>Activer au d\u00e9marrage :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable apache2<\/code><\/pre>\n\n\n\n<p>Tester localement :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/localhost<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Arborescence Apache importante<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/apache2\/<br>\u251c\u2500\u2500 apache2.conf<br>\u251c\u2500\u2500 ports.conf<br>\u251c\u2500\u2500 sites-available\/<br>\u251c\u2500\u2500 sites-enabled\/<br>\u251c\u2500\u2500 mods-available\/<br>\u251c\u2500\u2500 mods-enabled\/<br>\u251c\u2500\u2500 conf-available\/<br>\u2514\u2500\u2500 conf-enabled\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00f4le des dossiers<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/apache2\/sites-available\/ : fichiers de configuration disponibles<br>\/etc\/apache2\/sites-enabled\/   : sites r\u00e9ellement activ\u00e9s<br>\/var\/www\/                     : r\u00e9pertoires web<br>\/var\/log\/apache2\/             : logs Apache<\/code><\/pre>\n\n\n\n<p>Sur Debian\/Ubuntu, on cr\u00e9e g\u00e9n\u00e9ralement les fichiers dans :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/apache2\/sites-available\/<\/code><\/pre>\n\n\n\n<p>Puis on les active avec :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2ensite nomdusite.conf<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9er un premier virtual host<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er le r\u00e9pertoire du site<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/var\/www\/site1\/public_html<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er une page de test<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/var\/www\/site1\/public_html\/index.html<\/code><\/pre>\n\n\n\n<p>Contenu :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1&gt;Site 1 fonctionne&lt;\/h1&gt;<br>&lt;p&gt;Virtual host Apache op\u00e9rationnel.&lt;\/p&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">G\u00e9rer les droits<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>chown -R www-data:www-data \/var\/www\/site1<br>chmod -R 755 \/var\/www\/site1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Fichier virtual host simple<\/h2>\n\n\n\n<p>Cr\u00e9er le fichier :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/sites-available\/site1.conf<\/code><\/pre>\n\n\n\n<p>Configuration :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site1.example.lan<br>    ServerAlias www.site1.example.lan<br><br>    DocumentRoot \/var\/www\/site1\/public_html<br><br>    ErrorLog ${APACHE_LOG_DIR}\/site1_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/site1_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Activer le site :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2ensite site1.conf<\/code><\/pre>\n\n\n\n<p>D\u00e9sactiver le site par d\u00e9faut si n\u00e9cessaire :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2dissite 000-default.conf<\/code><\/pre>\n\n\n\n<p>Tester la configuration :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl configtest<\/code><\/pre>\n\n\n\n<p>Recharger Apache :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl reload apache2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tester le virtual host<\/h2>\n\n\n\n<p>Depuis le serveur :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -H \"Host: site1.example.lan\" http:\/\/127.0.0.1<\/code><\/pre>\n\n\n\n<p>Depuis un poste client, il faut que le nom soit r\u00e9solu.<\/p>\n\n\n\n<p>En environnement de test, modifier le fichier <code>hosts<\/code>.<\/p>\n\n\n\n<p>Sous Linux :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/hosts<\/code><\/pre>\n\n\n\n<p>Sous Windows :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code><\/pre>\n\n\n\n<p>Ajouter :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.1.10 site1.example.lan www.site1.example.lan<\/code><\/pre>\n\n\n\n<p>Puis tester dans le navigateur :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;site1.example.lan<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Multisite avec plusieurs domaines<\/h2>\n\n\n\n<p>Objectif :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>site1.example.lan \u2192 \/var\/www\/site1\/public_html<br>site2.example.lan \u2192 \/var\/www\/site2\/public_html<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er les dossiers<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/var\/www\/site1\/public_html<br>mkdir -p \/var\/www\/site2\/public_html<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pages de test<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"&lt;h1&gt;Site 1&lt;\/h1&gt;\" &gt; \/var\/www\/site1\/public_html\/index.html<br>echo \"&lt;h1&gt;Site 2&lt;\/h1&gt;\" &gt; \/var\/www\/site2\/public_html\/index.html<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Droits<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>chown -R www-data:www-data \/var\/www\/site1 \/var\/www\/site2<br>chmod -R 755 \/var\/www\/site1 \/var\/www\/site2<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Virtual host site 1<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/sites-available\/site1.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site1.example.lan<br>    ServerAlias www.site1.example.lan<br>    DocumentRoot \/var\/www\/site1\/public_html<br><br>    ErrorLog ${APACHE_LOG_DIR}\/site1_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/site1_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Virtual host site 2<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/sites-available\/site2.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site2.example.lan<br>    ServerAlias www.site2.example.lan<br>    DocumentRoot \/var\/www\/site2\/public_html<br><br>    ErrorLog ${APACHE_LOG_DIR}\/site2_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/site2_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Activation<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>a2ensite site1.conf<br>a2ensite site2.conf<br>apache2ctl configtest<br>systemctl reload apache2<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Fichier hosts de test<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.1.10 site1.example.lan www.site1.example.lan<br>192.168.1.10 site2.example.lan www.site2.example.lan<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Gestion de plusieurs domaines pour un m\u00eame site<\/h2>\n\n\n\n<p>Objectif :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>example.fr<br>www.example.fr<br>example.com<br>www.example.com<\/code><\/pre>\n\n\n\n<p>Tous doivent pointer vers le m\u00eame site.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName example.fr<br>    ServerAlias www.example.fr example.com www.example.com<br><br>    DocumentRoot \/var\/www\/example\/public_html<br><br>    ErrorLog ${APACHE_LOG_DIR}\/example_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/example_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Dans ce cas :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ServerName  = nom principal du site<br>ServerAlias = autres noms accept\u00e9s<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Rediriger tous les domaines vers un domaine principal<\/h2>\n\n\n\n<p>Objectif :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>example.com       \u2192 https:\/\/www.example.fr<br>www.example.com   \u2192 https:\/\/www.example.fr<br>example.fr        \u2192 https:\/\/www.example.fr<br>www.example.fr    \u2192 site principal<\/code><\/pre>\n\n\n\n<p>Virtual host de redirection HTTP :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName example.fr<br>    ServerAlias www.example.fr example.com www.example.com<br><br>    Redirect permanent \/ https:\/\/www.example.fr\/<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Virtual host principal HTTPS :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:443&gt;<br>    ServerName www.example.fr<br>    DocumentRoot \/var\/www\/example\/public_html<br><br>    SSLEngine on<br>    SSLCertificateFile \/etc\/letsencrypt\/live\/www.example.fr\/fullchain.pem<br>    SSLCertificateKeyFile \/etc\/letsencrypt\/live\/www.example.fr\/privkey.pem<br><br>    ErrorLog ${APACHE_LOG_DIR}\/example_ssl_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/example_ssl_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Virtual host avec sous-domaines<\/h2>\n\n\n\n<p>Objectif :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www.example.lan   \u2192 site vitrine<br>blog.example.lan  \u2192 blog<br>admin.example.lan \u2192 interface admin<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName www.example.lan<br>    DocumentRoot \/var\/www\/www\/public_html<br>&lt;\/VirtualHost&gt;<br><br>&lt;VirtualHost *:80&gt;<br>    ServerName blog.example.lan<br>    DocumentRoot \/var\/www\/blog\/public_html<br>&lt;\/VirtualHost&gt;<br><br>&lt;VirtualHost *:80&gt;<br>    ServerName admin.example.lan<br>    DocumentRoot \/var\/www\/admin\/public_html<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Chaque sous-domaine peut avoir :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- son dossier web<br>- ses logs<br>- ses r\u00e8gles d\u2019acc\u00e8s<br>- son certificat SSL<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration avec Directory<\/h2>\n\n\n\n<p>La directive <code>Directory<\/code> permet de contr\u00f4ler les droits Apache sur un r\u00e9pertoire.<\/p>\n\n\n\n<p>Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site1.example.lan<br>    DocumentRoot \/var\/www\/site1\/public_html<br><br>    &lt;Directory \/var\/www\/site1\/public_html&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride None<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    ErrorLog ${APACHE_LOG_DIR}\/site1_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/site1_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Explication des directives Directory<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Options -Indexes        : interdit le listing des dossiers<br>Options +FollowSymLinks : autorise les liens symboliques<br>AllowOverride None      : ignore les .htaccess<br>Require all granted     : autorise l\u2019acc\u00e8s web<br>Require all denied      : bloque l\u2019acc\u00e8s web<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Autoriser les fichiers .htaccess<\/h2>\n\n\n\n<p>Certaines applications comme WordPress peuvent utiliser <code>.htaccess<\/code>.<\/p>\n\n\n\n<p>Activer le module rewrite :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod rewrite<\/code><\/pre>\n\n\n\n<p>Configuration :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/site\/public_html&gt;<br>    Options -Indexes +FollowSymLinks<br>    AllowOverride All<br>    Require all granted<br>&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p>Recharger :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl configtest<br>systemctl reload apache2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple WordPress multisite simple<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName wordpress1.example.lan<br>    ServerAlias www.wordpress1.example.lan<br><br>    DocumentRoot \/var\/www\/wordpress1<br><br>    &lt;Directory \/var\/www\/wordpress1&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride All<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    ErrorLog ${APACHE_LOG_DIR}\/wordpress1_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/wordpress1_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Pour WordPress :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AllowOverride All est souvent n\u00e9cessaire<br>mod_rewrite doit \u00eatre activ\u00e9<br>les droits doivent permettre \u00e0 Apache de lire les fichiers<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Activer SSL avec Certbot<\/h2>\n\n\n\n<p>Installer Certbot :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install certbot python3-certbot-apache -y<\/code><\/pre>\n\n\n\n<p>Demander un certificat :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot --apache -d example.fr -d www.example.fr<\/code><\/pre>\n\n\n\n<p>Pour plusieurs domaines :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot --apache -d example.fr -d www.example.fr -d example.com -d www.example.com<\/code><\/pre>\n\n\n\n<p>Renouvellement automatique :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status certbot.timer<\/code><\/pre>\n\n\n\n<p>Test de renouvellement :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot renew --dry-run<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Virtual host HTTP + HTTPS complet<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName example.fr<br>    ServerAlias www.example.fr<br>    Redirect permanent \/ https:\/\/www.example.fr\/<br>&lt;\/VirtualHost&gt;<br><br>&lt;VirtualHost *:443&gt;<br>    ServerName www.example.fr<br>    ServerAlias example.fr<br><br>    DocumentRoot \/var\/www\/example\/public_html<br><br>    &lt;Directory \/var\/www\/example\/public_html&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride All<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    SSLEngine on<br>    SSLCertificateFile \/etc\/letsencrypt\/live\/www.example.fr\/fullchain.pem<br>    SSLCertificateKeyFile \/etc\/letsencrypt\/live\/www.example.fr\/privkey.pem<br><br>    ErrorLog ${APACHE_LOG_DIR}\/example_ssl_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/example_ssl_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Gestion des ports<\/h2>\n\n\n\n<p>Apache \u00e9coute les ports d\u00e9finis dans :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/apache2\/ports.conf<\/code><\/pre>\n\n\n\n<p>Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Listen 80<br>Listen 443<\/code><\/pre>\n\n\n\n<p>Pour SSL :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule ssl_module&gt;<br>    Listen 443<br>&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pare-feu UFW<\/h2>\n\n\n\n<p>Autoriser HTTP :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw allow 80\/tcp<\/code><\/pre>\n\n\n\n<p>Autoriser HTTPS :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw allow 443\/tcp<\/code><\/pre>\n\n\n\n<p>Ou :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw allow \"Apache Full\"<\/code><\/pre>\n\n\n\n<p>V\u00e9rifier :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw status<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Logs par site<\/h2>\n\n\n\n<p>Dans chaque virtual host :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ErrorLog ${APACHE_LOG_DIR}\/site_error.log<br>CustomLog ${APACHE_LOG_DIR}\/site_access.log combined<\/code><\/pre>\n\n\n\n<p>Consulter :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/log\/apache2\/site_access.log<br>tail -f \/var\/log\/apache2\/site_error.log<\/code><\/pre>\n\n\n\n<p>Logs globaux :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/log\/apache2\/error.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Commandes utiles Apache<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl configtest<br>apache2ctl -S<br>systemctl reload apache2<br>systemctl restart apache2<br>systemctl status apache2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Afficher les virtual hosts actifs<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl -S<\/code><\/pre>\n\n\n\n<p>Exemple de sortie :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>*:80 is a NameVirtualHost<br>default server site1.example.lan (\/etc\/apache2\/sites-enabled\/site1.conf:1)<br>port 80 namevhost site1.example.lan<br>port 80 namevhost site2.example.lan<\/code><\/pre>\n\n\n\n<p>Cette commande est tr\u00e8s utile pour v\u00e9rifier :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- quel site est par d\u00e9faut<br>- quels domaines sont reconnus<br>- quels fichiers de configuration sont charg\u00e9s<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9sactiver un site<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>a2dissite site1.conf<br>apache2ctl configtest<br>systemctl reload apache2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Supprimer un site proprement<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>a2dissite site1.conf<br>rm \/etc\/apache2\/sites-available\/site1.conf<br>rm -rf \/var\/www\/site1<br>apache2ctl configtest<br>systemctl reload apache2<\/code><\/pre>\n\n\n\n<p>\u00c0 utiliser avec prudence, surtout pour <code>rm -rf<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Site par d\u00e9faut<\/h2>\n\n\n\n<p>Si aucun virtual host ne correspond au domaine demand\u00e9, Apache sert le premier virtual host charg\u00e9.<\/p>\n\n\n\n<p>Souvent :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>000-default.conf<\/code><\/pre>\n\n\n\n<p>Bonnes pratiques :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- d\u00e9sactiver le site par d\u00e9faut si inutile<br>- ou cr\u00e9er un vhost catch-all propre<\/code><\/pre>\n\n\n\n<p>Exemple catch-all :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName default.local<br>    DocumentRoot \/var\/www\/default<br><br>    &lt;Directory \/var\/www\/default&gt;<br>        Require all denied<br>    &lt;\/Directory&gt;<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple complet multisite<\/h2>\n\n\n\n<p>Objectif :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>site-a.lan      \u2192 \/var\/www\/site-a\/public_html<br>site-b.lan      \u2192 \/var\/www\/site-b\/public_html<br>www.entreprise.fr \u2192 \/var\/www\/entreprise\/public_html<br>blog.entreprise.fr \u2192 \/var\/www\/blog\/public_html<\/code><\/pre>\n\n\n\n<p>Cr\u00e9ation :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/var\/www\/site-a\/public_html<br>mkdir -p \/var\/www\/site-b\/public_html<br>mkdir -p \/var\/www\/entreprise\/public_html<br>mkdir -p \/var\/www\/blog\/public_html<\/code><\/pre>\n\n\n\n<p>Pages de test :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"&lt;h1&gt;Site A&lt;\/h1&gt;\" &gt; \/var\/www\/site-a\/public_html\/index.html<br>echo \"&lt;h1&gt;Site B&lt;\/h1&gt;\" &gt; \/var\/www\/site-b\/public_html\/index.html<br>echo \"&lt;h1&gt;Entreprise&lt;\/h1&gt;\" &gt; \/var\/www\/entreprise\/public_html\/index.html<br>echo \"&lt;h1&gt;Blog&lt;\/h1&gt;\" &gt; \/var\/www\/blog\/public_html\/index.html<\/code><\/pre>\n\n\n\n<p>Droits :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chown -R www-data:www-data \/var\/www\/site-a \/var\/www\/site-b \/var\/www\/entreprise \/var\/www\/blog<br>chmod -R 755 \/var\/www\/site-a \/var\/www\/site-b \/var\/www\/entreprise \/var\/www\/blog<\/code><\/pre>\n\n\n\n<p>Cr\u00e9er les fichiers :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/sites-available\/site-a.conf<br>nano \/etc\/apache2\/sites-available\/site-b.conf<br>nano \/etc\/apache2\/sites-available\/entreprise.conf<br>nano \/etc\/apache2\/sites-available\/blog.conf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">site-a.conf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site-a.lan<br>    DocumentRoot \/var\/www\/site-a\/public_html<br><br>    &lt;Directory \/var\/www\/site-a\/public_html&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride None<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    ErrorLog ${APACHE_LOG_DIR}\/site-a_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/site-a_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">site-b.conf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName site-b.lan<br>    DocumentRoot \/var\/www\/site-b\/public_html<br><br>    &lt;Directory \/var\/www\/site-b\/public_html&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride None<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    ErrorLog ${APACHE_LOG_DIR}\/site-b_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/site-b_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">entreprise.conf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName entreprise.fr<br>    ServerAlias www.entreprise.fr entreprise.com www.entreprise.com<br><br>    DocumentRoot \/var\/www\/entreprise\/public_html<br><br>    &lt;Directory \/var\/www\/entreprise\/public_html&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride All<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    ErrorLog ${APACHE_LOG_DIR}\/entreprise_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/entreprise_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">blog.conf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;<br>    ServerName blog.entreprise.fr<br><br>    DocumentRoot \/var\/www\/blog\/public_html<br><br>    &lt;Directory \/var\/www\/blog\/public_html&gt;<br>        Options -Indexes +FollowSymLinks<br>        AllowOverride All<br>        Require all granted<br>    &lt;\/Directory&gt;<br><br>    ErrorLog ${APACHE_LOG_DIR}\/blog_error.log<br>    CustomLog ${APACHE_LOG_DIR}\/blog_access.log combined<br>&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Activation :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2ensite site-a.conf<br>a2ensite site-b.conf<br>a2ensite entreprise.conf<br>a2ensite blog.conf<br>a2enmod rewrite<br>apache2ctl configtest<br>systemctl reload apache2<\/code><\/pre>\n\n\n\n<p>Test local avec <code>curl<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -H \"Host: site-a.lan\" http:\/\/127.0.0.1<br>curl -H \"Host: site-b.lan\" http:\/\/127.0.0.1<br>curl -H \"Host: entreprise.fr\" http:\/\/127.0.0.1<br>curl -H \"Host: blog.entreprise.fr\" http:\/\/127.0.0.1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e9curit\u00e9 minimale recommand\u00e9e<\/h2>\n\n\n\n<p>Dans les virtual hosts :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/site\/public_html&gt;<br>    Options -Indexes +FollowSymLinks<br>    AllowOverride None<br>    Require all granted<br>&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p>Pour \u00e9viter l\u2019affichage des fichiers d\u2019un dossier :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Options -Indexes<\/code><\/pre>\n\n\n\n<p>Pour limiter l\u2019acc\u00e8s \u00e0 une zone admin par IP :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/site\/public_html\/admin&gt;<br>    Require ip 192.168.1.0\/24<br>&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p>Pour bloquer compl\u00e8tement un r\u00e9pertoire :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/site\/private&gt;<br>    Require all denied<br>&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple avec authentification simple<\/h2>\n\n\n\n<p>Activer le module :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod auth_basic<\/code><\/pre>\n\n\n\n<p>Cr\u00e9er un fichier de mots de passe :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install apache2-utils -y<br>htpasswd -c \/etc\/apache2\/.htpasswd admin<\/code><\/pre>\n\n\n\n<p>Prot\u00e9ger un r\u00e9pertoire :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/site\/public_html\/admin&gt;<br>    AuthType Basic<br>    AuthName \"Zone admin\"<br>    AuthUserFile \/etc\/apache2\/.htpasswd<br>    Require valid-user<br>&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<p>Recharger :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl configtest<br>systemctl reload apache2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Probl\u00e8mes fr\u00e9quents<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Probl\u00e8me<\/th><th>Cause probable<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Le mauvais site s\u2019affiche<\/td><td><code>ServerName<\/code> incorrect ou vhost par d\u00e9faut<\/td><td>v\u00e9rifier <code>apache2ctl -S<\/code><\/td><\/tr><tr><td>Forbidden 403<\/td><td>droits fichiers ou <code>Require all granted<\/code> absent<\/td><td>v\u00e9rifier chmod\/chown et Directory<\/td><\/tr><tr><td>Apache ne red\u00e9marre pas<\/td><td>erreur de syntaxe<\/td><td><code>apache2ctl configtest<\/code><\/td><\/tr><tr><td>Domaine non r\u00e9solu<\/td><td>DNS ou fichier hosts incorrect<\/td><td>v\u00e9rifier r\u00e9solution DNS<\/td><\/tr><tr><td><code>.htaccess<\/code> ignor\u00e9<\/td><td><code>AllowOverride None<\/code><\/td><td>passer \u00e0 <code>AllowOverride All<\/code><\/td><\/tr><tr><td>SSL ne fonctionne pas<\/td><td>certificat ou vhost 443 absent<\/td><td>v\u00e9rifier Certbot et ports.conf<\/td><\/tr><tr><td>Redirection en boucle<\/td><td>mauvais vhost HTTP\/HTTPS<\/td><td>v\u00e9rifier Redirect et ServerName<\/td><\/tr><tr><td>Site non activ\u00e9<\/td><td>lien absent dans sites-enabled<\/td><td>utiliser <code>a2ensite<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9thode de diagnostic<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl configtest<br>apache2ctl -S<br>systemctl status apache2<br>tail -f \/var\/log\/apache2\/error.log<br>curl -I -H \"Host: domaine.tld\" http:\/\/127.0.0.1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Fichiers importants<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/apache2\/apache2.conf<br>\/etc\/apache2\/ports.conf<br>\/etc\/apache2\/sites-available\/<br>\/etc\/apache2\/sites-enabled\/<br>\/etc\/apache2\/mods-available\/<br>\/etc\/apache2\/mods-enabled\/<br>\/var\/www\/<br>\/var\/log\/apache2\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c0 retenir<\/h2>\n\n\n\n<p>Les Virtual Hosts permettent d\u2019h\u00e9berger plusieurs sites sur un m\u00eame serveur Apache.<\/p>\n\n\n\n<p>Points essentiels :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- un fichier .conf par site<br>- un ServerName par domaine principal<br>- des ServerAlias pour les domaines secondaires<br>- un DocumentRoot par site<br>- des logs s\u00e9par\u00e9s pour faciliter le diagnostic<br>- un test syst\u00e9matique avec apache2ctl configtest<br>- une v\u00e9rification avec apache2ctl -S<\/code><\/pre>\n\n\n\n<p>Une configuration propre des Virtual Hosts permet de g\u00e9rer efficacement du multisite, plusieurs domaines et des sous-domaines sur une seule machine.<audio autoplay=\"\"><\/audio><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les Virtual Hosts Apache permettent d\u2019h\u00e9berger plusieurs sites web sur un m\u00eame serveur. Ils permettent de g\u00e9rer : Exemple : Principe g\u00e9n\u00e9ral Apache re\u00e7oit une requ\u00eate HTTP avec un nom de domaine dans l\u2019en-t\u00eate Host. Exemple : Apache compare ce nom avec les directives : Puis il sert le bon site gr\u00e2ce au bon bloc [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12,5],"tags":[],"class_list":["post-315","post","type-post","status-publish","format-standard","hentry","category-linux","category-systeme"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fiche virtual host Apache 2 sous Debian \/ Ubuntu - Eryann Breizh SecOps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fiche virtual host Apache 2 sous Debian \/ Ubuntu - Eryann Breizh SecOps\" \/>\n<meta property=\"og:description\" content=\"Les Virtual Hosts Apache permettent d\u2019h\u00e9berger plusieurs sites web sur un m\u00eame serveur. Ils permettent de g\u00e9rer : Exemple : Principe g\u00e9n\u00e9ral Apache re\u00e7oit une requ\u00eate HTTP avec un nom de domaine dans l\u2019en-t\u00eate Host. Exemple : Apache compare ce nom avec les directives : Puis il sert le bon site gr\u00e2ce au bon bloc [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/\" \/>\n<meta property=\"og:site_name\" content=\"Eryann Breizh SecOps\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-03T16:56:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-03T16:56:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1536\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"wpadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"wpadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/\"},\"author\":{\"name\":\"wpadmin\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/person\\\/d2ee98d2385cd045ed4fe1c07ca320b5\"},\"headline\":\"Fiche virtual host Apache 2 sous Debian \\\/ Ubuntu\",\"datePublished\":\"2026-05-03T16:56:53+00:00\",\"dateModified\":\"2026-05-03T16:56:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/\"},\"wordCount\":638,\"publisher\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-683x1024.png\",\"articleSection\":[\"Linux\",\"Syst\u00e8me\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/\",\"url\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/\",\"name\":\"Fiche virtual host Apache 2 sous Debian \\\/ Ubuntu - Eryann Breizh SecOps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-683x1024.png\",\"datePublished\":\"2026-05-03T16:56:53+00:00\",\"dateModified\":\"2026-05-03T16:56:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#primaryimage\",\"url\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png\",\"contentUrl\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png\",\"width\":1024,\"height\":1536},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/linux\\\/fiche-virtual-host-apache-2-sous-debian-ubuntu\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/eryann.fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fiche virtual host Apache 2 sous Debian \\\/ Ubuntu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#website\",\"url\":\"https:\\\/\\\/eryann.fr\\\/\",\"name\":\"Eryann Breizh SecOps\",\"description\":\"Fiches techniques &amp; labs en syst\u00e8mes et r\u00e9seaux poor les \u00e9tudiants en BTS CEIL ET SIO\",\"publisher\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/eryann.fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#organization\",\"name\":\"Breizh Sec Ops\",\"url\":\"https:\\\/\\\/eryann.fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png\",\"contentUrl\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png\",\"width\":1246,\"height\":229,\"caption\":\"Breizh Sec Ops\"},\"image\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/person\\\/d2ee98d2385cd045ed4fe1c07ca320b5\",\"name\":\"wpadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g\",\"caption\":\"wpadmin\"},\"sameAs\":[\"https:\\\/\\\/eryann.fr\"],\"url\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/author\\\/wpadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fiche virtual host Apache 2 sous Debian \/ Ubuntu - Eryann Breizh SecOps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/","og_locale":"fr_FR","og_type":"article","og_title":"Fiche virtual host Apache 2 sous Debian \/ Ubuntu - Eryann Breizh SecOps","og_description":"Les Virtual Hosts Apache permettent d\u2019h\u00e9berger plusieurs sites web sur un m\u00eame serveur. Ils permettent de g\u00e9rer : Exemple : Principe g\u00e9n\u00e9ral Apache re\u00e7oit une requ\u00eate HTTP avec un nom de domaine dans l\u2019en-t\u00eate Host. Exemple : Apache compare ce nom avec les directives : Puis il sert le bon site gr\u00e2ce au bon bloc [&hellip;]","og_url":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/","og_site_name":"Eryann Breizh SecOps","article_published_time":"2026-05-03T16:56:53+00:00","article_modified_time":"2026-05-03T16:56:54+00:00","og_image":[{"width":1024,"height":1536,"url":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png","type":"image\/png"}],"author":"wpadmin","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"wpadmin","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#article","isPartOf":{"@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/"},"author":{"name":"wpadmin","@id":"https:\/\/eryann.fr\/#\/schema\/person\/d2ee98d2385cd045ed4fe1c07ca320b5"},"headline":"Fiche virtual host Apache 2 sous Debian \/ Ubuntu","datePublished":"2026-05-03T16:56:53+00:00","dateModified":"2026-05-03T16:56:54+00:00","mainEntityOfPage":{"@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/"},"wordCount":638,"publisher":{"@id":"https:\/\/eryann.fr\/#organization"},"image":{"@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#primaryimage"},"thumbnailUrl":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-683x1024.png","articleSection":["Linux","Syst\u00e8me"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/","url":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/","name":"Fiche virtual host Apache 2 sous Debian \/ Ubuntu - Eryann Breizh SecOps","isPartOf":{"@id":"https:\/\/eryann.fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#primaryimage"},"image":{"@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#primaryimage"},"thumbnailUrl":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc-683x1024.png","datePublished":"2026-05-03T16:56:53+00:00","dateModified":"2026-05-03T16:56:54+00:00","breadcrumb":{"@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#primaryimage","url":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png","contentUrl":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/4a95f701-933c-4cdf-9cab-1bae2fefa2cc.png","width":1024,"height":1536},{"@type":"BreadcrumbList","@id":"https:\/\/eryann.fr\/index.php\/linux\/fiche-virtual-host-apache-2-sous-debian-ubuntu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/eryann.fr\/"},{"@type":"ListItem","position":2,"name":"Fiche virtual host Apache 2 sous Debian \/ Ubuntu"}]},{"@type":"WebSite","@id":"https:\/\/eryann.fr\/#website","url":"https:\/\/eryann.fr\/","name":"Eryann Breizh SecOps","description":"Fiches techniques &amp; labs en syst\u00e8mes et r\u00e9seaux poor les \u00e9tudiants en BTS CEIL ET SIO","publisher":{"@id":"https:\/\/eryann.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eryann.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/eryann.fr\/#organization","name":"Breizh Sec Ops","url":"https:\/\/eryann.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/eryann.fr\/#\/schema\/logo\/image\/","url":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png","contentUrl":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png","width":1246,"height":229,"caption":"Breizh Sec Ops"},"image":{"@id":"https:\/\/eryann.fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/eryann.fr\/#\/schema\/person\/d2ee98d2385cd045ed4fe1c07ca320b5","name":"wpadmin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g","caption":"wpadmin"},"sameAs":["https:\/\/eryann.fr"],"url":"https:\/\/eryann.fr\/index.php\/author\/wpadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts\/315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/comments?post=315"}],"version-history":[{"count":1,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts\/315\/revisions"}],"predecessor-version":[{"id":317,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts\/315\/revisions\/317"}],"wp:attachment":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/media?parent=315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/categories?post=315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/tags?post=315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}