Forum général.général Apache, et les virtualhosts

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
3
26
juil.
2025

Bonjour,

Après avoir bien galéré sans résultat, je viens demander de l'aide ici.
J'ai un petit VPS chez Informanik sur lequel j'ai un blog.Tout fonctionnait bien.
J'ai acheté un domaine pour faire un autre site sur un sujet bien spécifique et je me dis donc je vais le mettre aussi sur ce même VPS.
J'achète un domaine, configure mes fichiers virtualhosts.

J'ai donc deux sites :
- site-a.fr (certificat SSL actif avec Let's Encrypt)
- site-b.fr (pas encore de certificat SSL)

Le problème c'est que, lorsque je les active les deux, mon site-b.fr pointe vers le site site-a.fr. Pour être précis :

  • site-b.fr pointe vers Apache2 Debian Default Page
  • https://site-b.fr pointe vers site-a.fr (sans le certificat !)

Voici les fichiers de configurations et tout ce qui peut être nécessaire.

debian@ov-bb9771:~$ ls -la /var/www/
total 20
drwxr-xr-x  5 root   root   4096 Jul 25 17:24 .
drwxr-xr-x 12 root   root   4096 Jul 21  2024 ..
drwxr-xr-x  2 root   root   4096 Jul 21  2024 html
drwxr-xr-x  4 debian debian 4096 Jun 15 19:56 site-a.fr
drwxr-xr-x  2 debian debian 4096 Jul 26 09:05 site-b.fr


debian@ov-bb9771:~$ tree /var/www/
/var/www/
├── html
│   └── index.html
├── site-a.fr
│   ├── index.html
│   ├── style.css
└── site-b.fr
    └── index.html

==================================
debian@ov-bb9771:~$ tree /etc/apache2/sites-available/
/etc/apache2/sites-available/
├── 000-default.conf
├── default-ssl.conf
├── site-a.fr-le-ssl.conf
├── site-a.fr.conf
└── site-b.fr.conf

1 directory, 5 files
debian@ov-bb9771:~$ <<<<<

====================================

debian@ov-bb9771:~$ cat /etc/apache2/sites-available/site-a.fr.conf 
<VirtualHost *:80>
        ServerName site-a.fr

        ServerAdmin email.fr
        DocumentRoot /var/www/site-a.fr/

        <Directory /var/www/site-a.fr>
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =site-a.fr
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

========================================

debian@ov-bb9771:~$ cat /etc/apache2/sites-available/site-a.fr-le-ssl.conf 
<IfModule mod_ssl.c>
SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)
<VirtualHost *:443>
        ServerName site-a.fr

        ServerAdmin email.fr
        DocumentRoot /var/www/site-a.fr/

        <Directory /var/www/site-a.fr>
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


SSLCertificateFile /etc/letsencrypt/live/site-a.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/site-a.fr/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Header always set Strict-Transport-Security "max-age=31536000"
SSLUseStapling on
</VirtualHost>
</IfModule>



=========================================

debian@ov-bb9771:~$ cat /etc/apache2/sites-available/site-b.fr.conf 
<VirtualHost *:80>
        ServerName site-b.fr
        ServerAlias www.site-b.fr

        ServerAdmin email.fr
        DocumentRoot /var/www/site-b.fr/

        <Directory /var/www/site-b.fr>
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =site-b.fr
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Qu'est qui ne semble pas correct dans les fichiers de configuration ?

Je vous remercie d'avance pour votre aide.

  • # ls -l /etc/apache2/sites-enabled/

    Posté par  (site web personnel) . Évalué à 5 (+3/-0).

    Tout est dans le titre.

    (Presque tout : c'est ce répertoire qui compte, habituellement en ayant des liens symboliques vers les fichiers du répertoire d'à côté. Pas d'obligation cependant, on peut très bien avoir des fichiers normaux dedans.)

    Debian Consultant @ DEBAMAX

    • [^] # Re: ls -l /etc/apache2/sites-enabled/

      Posté par  . Évalué à 2 (+1/-0).

      Honnêtement je sais pas comment interpréter ta réponse.
      Je suis vraiment novice quant au fonctionnement d'un serveur.

      Au mieux peux coller le retour de la commande :) :)

      debian@ov-bb9771:~$ ls -l /etc/apache2/sites-enabled/
      total 0
      lrwxrwxrwx 1 root root 45 Jul 26 09:51 site-a.fr-le-ssl.conf -> ../sites-available/site-a.fr-le-ssl.conf
      lrwxrwxrwx 1 root root 38 Jul 26 09:51 site-a.fr.conf -> ../sites-available/site-a.fr.conf
      lrwxrwxrwx 1 root root 35 Jul 26 10:06 site-b.fr.conf -> ../sites-available/site-b.fr.conf
  • # Le second hôte virtuel a-t’il été activé ?

    Posté par  . Évalué à 4 (+2/-0). Dernière modification le 26 juillet 2025 à 11:48.

    Bonjour,

    On ne voit que etc/apache2/sites-available/ pas etc/apache2/sites-enabled/
    Le cas échéant faire :

    sudo a2ensite site-b.fr
    

    et redémarrer le service :

    sudo systemctl restart apache2
    
    • [^] # Re: Le second hôte virtuel a-t’il été activé ?

      Posté par  . Évalué à 1 (+0/-0).

      Salut.

      Oui, le second site est activé :

      debian@ov-bb9771:/etc/apache2$ sudo apache2ctl -S  
      AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
      VirtualHost configuration:
      *:443                  site-a.fr (/etc/apache2/sites-enabled/site-a.fr-le-ssl.conf:3)
      *:80                   is a NameVirtualHost
               default server site-a.fr (/etc/apache2/sites-enabled/site-a.fr.conf:1)
               port 80 namevhost site-a.fr (/etc/apache2/sites-enabled/site-a.fr.conf:1)
               port 80 namevhost site-b.fr (/etc/apache2/sites-enabled/site-b.fr.conf:1)
                       alias www.site-b.fr
      ServerRoot: "/etc/apache2"
      Main DocumentRoot: "/var/www/html"
      Main ErrorLog: "/var/log/apache2/error.log"
      Mutex watchdog-callback: using_defaults
      Mutex rewrite-map: using_defaults
      Mutex ssl-stapling-refresh: using_defaults
      Mutex ssl-stapling: using_defaults
      Mutex ssl-cache: using_defaults
      Mutex default: dir="/var/run/apache2/" mechanism=default 
      PidFile: "/var/run/apache2/apache2.pid"
      Define: DUMP_VHOSTS
      Define: DUMP_RUN_CFG
      User: name="www-data" id=33
      Group: name="www-data" id=33
      • [^] # Re: Le second hôte virtuel a-t’il été activé ?

        Posté par  . Évalué à 4 (+2/-0). Dernière modification le 26 juillet 2025 à 13:56.

        Au temps pour moi cette partie de la configuration dans /etc/apache2/sites-available/site-b.fr.conf m'avait échappé :

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =site-b.fr
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
        

        Ce qui signifie que tu rediriges tout vers https://site-b.fr et comme il n'y a pas d'hôte virtuel sur le port 443 pour site-b.fr, c'est l'hôte par défaut sur le port 443 qui répond (ici probablement default-ssl, sinon le premier disponible dans l'ordre alphabétique des noms de fichiers de conf)

        Ces lignes ne seront utiles que lorsque tu auras un certificat SSL pour site-b avec un hôte virtuel sur le port 443 correctement configuré.

        • [^] # Re: Le second hôte virtuel a-t’il été activé ?

          Posté par  . Évalué à 1 (+0/-0).

          Un immense merci pour ton aide.
          Le problème venait effectivement de là.

          Je viens d'ajouter un certificat Let's Encrypt avec ce virtualhost :

          debian@ov-bb9771:/etc/apache2/sites-available$ cat site-b.fr-le-ssl.conf 
          <IfModule mod_ssl.c>
          SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)
          <VirtualHost *:443>
                  ServerName site-b.fr
          
                  ServerAdmin email.fr
                  DocumentRoot /var/www/site-b.fr/
          
                  <Directory /var/www/site-b.fr>
                    require all granted
                    AllowOverride All
                  </Directory>
          
                  LogLevel info
          
                  ErrorLog ${APACHE_LOG_DIR}/error.log
                  CustomLog ${APACHE_LOG_DIR}/access.log combined
          
          SSLCertificateFile /etc/letsencrypt/live/site-b.fr/fullchain.pem
          SSLCertificateKeyFile /etc/letsencrypt/live/site-b.fr/privkey.pem
          Include /etc/letsencrypt/options-ssl-apache.conf
          Header always set Strict-Transport-Security "max-age=31536000"
          SSLUseStapling on
          </VirtualHost>
          </IfModule>

          Alors effectivement tout fonctionne.
          J'ai mis un renouvellement automatique du certificat avec crontab mais je me dis, si un jour pour x raison le renouvellement ne se fait pas, je ne sais pas si le site-b.fr pointera comme avant vers le site-a.fr.

          Pour la partie :

          RewriteEngine on
          RewriteCond %{SERVER_NAME} =site-b.fr
          RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

          j'avoue l'avoir copié un peu bêtement depuis un site. Je comprends la fonction de cette instruction mais je me demande si c'est bien pertinent dans mon cas.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.