La page demandée n'existe pas.

Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
tutoriel:reseau:http:serveur:apache:vhost:auto:start [2024/09/21 10:12] – supprimée - modification externe (Unknown date) 127.0.0.1tutoriel:reseau:http:serveur:apache:vhost:auto:start [2024/09/21 10:12] (Version actuelle) – ↷ Page déplacée de tutoriel:internet:serveur:apache:vhost:auto:start à tutoriel:reseau:http:serveur:apache:vhost:auto:start admin
Ligne 1: Ligne 1:
 +{{tag>tutoriel}}
  
 +====== Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification ======
 +
 +Les hôtes virtuels du serveur web Apache permettent d'héberger plusieurs domaines sur la même IP. Le champ //Host:// de la requête HTTP détermine l'hôte virtuel qui devra traiter la requête.
 +
 +La génération automatique des domaines est utile si les <VirtualHost> sont nombreux et sensiblement les mêmes, par exemple :<code - >
 +NameVirtualHost 111.22.33.44
 +<VirtualHost 111.22.33.44>
 +  ServerName www.customer-1.com
 +  DocumentRoot /www/hosts/www.customer-1.com/docs
 +  ScriptAlias /cgi-bin/ /www/hosts/www.customer-1.com/cgi-bin
 +</VirtualHost>
 +
 +<VirtualHost 111.22.33.44>
 +  ServerName www.customer-2.com
 +  DocumentRoot /www/hosts/www.customer-2.com/docs
 +  ScriptAlias /cgi-bin/ /www/hosts/www.customer-2.com/cgi-bin
 +</VirtualHost>
 +
 +<VirtualHost 111.22.33.44>
 +  ServerName www.customer-N.com
 +  DocumentRoot /www/hosts/www.customer-N.com/docs
 +  ScriptAlias /cgi-bin/ /www/hosts/www.customer-N.com/cgi-bin
 +</VirtualHost> 
 +</code>
 +
 +<WRAP center round info 60%>
 +L'idée de base est de remplacer la configuration <VirtualHost> statique par un mécanisme dynamique. Ainsi,
 +  * Le fichier de configuration est plus petit
 +  * Ajouter des serveurs virtuels revient à créer les répertoires appropriés dans le système de fichiers et les entrées dans le DNS sans reconfigurer ni redémarrer Apache.
 +
 +Un hôte virtuel est défini par :
 +  * son adresse IP
 +  * et le contenu de l'entête Host: de la requête HTTP.
 +
 +Pour cela, cette information est insérée dynamiquement dans le chemin d'accès du fichier utilisé pour satisfaire la demande.
 +</WRAP>
 +
 +
 +===== Pré-requis =====
 +
 +Il faut activer le module mod_vhost_alias par :<cli prompt='$ '>USER@MACHINE:~$ sudo a2enmod vhost_alias</cli>
 +
 +===== Première étape =====
 +
 +<WRAP center round info 60%>
 +Pour rendre dynamique un hôte virtuel, il faut modifier :
 +  * **UseCanonicalName Off** -> le nom du serveur est fourni par l'entête Host: de la requête. Si Apache ne trouve pas nom du serveur, c'est la valeur configurée avec ServerName qui est utilisée
 +  * **DocumentRoot**
 +</WRAP>
 +
 +==== Hôte virtuel dynamique simple ====
 +
 +<subnumberlist>
 +  - **Cet extrait met en œuvre un hôte virtuel simple, mais d'une façon générique à l'aide de mod_vhost_alias** :<code - /etc/apache2/sites-available/monsite.tld.conf>
 +...
 +    # obtenir le nom du serveur à partir de l'en-tête Host:
 +    UseCanonicalName Off
 +    
 +    # ce format de journal peut être divisé par hôte virtuel sur la base du premier champ
 +    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
 +    CustomLog logs/access_log vcommon
 +    
 +    # inclure le nom du serveur dans les noms de fichiers
 +    VirtualDocumentRoot /www/hosts/%0/docs
 +    VirtualScriptAlias /www/hosts/%0/cgi-bin
 +...
 +</code>Le nom du serveur qui est inséré dans le nom de fichier est déduit de l'adresse IP de l'hôte virtuel.
 +  - **Un serveur de pages d'accueil virtuel** : c'est une adaptation du système ci-dessus pour créer des pages d'accueil. Des sous-chaînes du nom du serveur sont utilisées dans le nom du fichier de sorte que, par exemple les documents pour www.user.isp.com se trouvent dans /home/user/.<code - >
 +...
 +    # obtenir le nom du serveur à partir de l'en-tête Host:
 +    UseCanonicalName Off
 +  
 +    # ce format de journal peut être divisé par hôte virtuel sur la base du premier champ
 +    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
 +    CustomLog logs/access_log vcommon
 +
 +    # include part of the server name in the filenames
 +    VirtualDocumentRoot /www/hosts/%2/docs
 +
 +    # single cgi-bin directory
 +    ScriptAlias /cgi-bin/ /www/std-cgi/
 +</code>
 +  - **Serveur virtuel basé sur l'IP plus efficace** : Amélioration des hôtes virtuels dynamiques simples. Pour éviter la recherche DNS pour transformer un nom en une adresse IP, on peut se baser sur les adresses IP elles-mêmes plutôt que sur les noms correspondants<code - >
 +    # obtenir le nom du serveur à partir du reverse DNS de l'adresse IP
 +    UseCanonicalName DNS
 +    
 +    # inclure l'adresse IP dans les journaux afin qu'ils puissent être scindés
 +    LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
 +    CustomLog logs/access_log vcommon
 +    
 +    # inclure l'adresse IP dans les noms de fichiers
 +    VirtualDocumentRootIP /var/www/html/hosts/%0/docs
 +    VirtualScriptAliasIP /var/www/html/hosts/%0/cgi-bin
 +</code>
 +</subnumberlist>
 +==== Plus d'un hôte virtuel sur le même serveur ====
 +
 +Par exemple, une adresse IP pour les pages d'accueil des clients les et un autre pour les commerciaux avec :<code - >
 +UseCanonicalName Off
 +
 +LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
 +
 +<Directory /var/www/html/commercial>
 +    Options FollowSymLinks
 +    AllowOverride All
 +</Directory>
 +
 +<Directory /var/www/html/homepages>
 +    Options FollowSymLinks
 +    AllowOverride None
 +</Directory>
 +
 +<VirtualHost 111.22.33.44>
 +    ServerName www.commercial.isp.com
 +  
 +    CustomLog logs/access_log.commercial vcommon
 +  
 +    VirtualDocumentRoot /var/www/html/commercial/%0/docs
 +    VirtualScriptAlias /var/www/html/commercial/%0/cgi-bin
 +</VirtualHost>
 +
 +<VirtualHost 111.22.33.45>
 +    ServerName www.homepages.isp.com
 +  
 +    CustomLog logs/access_log.homepages vcommon
 +  
 +    VirtualDocumentRoot /var/www/html/homepages/%0/docs
 +    ScriptAlias /cgi-bin/ /var/www/html/std-cgi/
 +</VirtualHost>
 +</code>
 +
 +----
 +
 +
 +<subnumberlist>
 +  - **Sous-domaines par nom** : pour chaque domaine, on crée un fichier /etc/apache2/sites-available/domaineX.com
 +    - **en local, sous-domaines du localhost** : Exemple : sous-domaine doc.localhost, accessible localement sur le PC lui-même (localhost) ; cela permet de tester le serveur. Pour cela,
 +      * déclarer doc.localhost dans le fichier hosts : éditez avec les droits d'administration le fichier **/etc/hosts** pour lui ajouter la ligne :<code - /etc/hosts>127.0.0.1    doc.localhost</code>
 +      * Créez avec les droits d'administration le fichier **/etc/apache2/sites-available/doc.localhost** :<code - /etc/apache2/sites-available/doc.localhost>
 +ServerAdmin administrateur@domaine.fr
 +UseCanonicalName Off
 +LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
 +CustomLog logs/access_log vcommon
 +
 +<VirtualHost *:80>
 + ServerName doc.localhost
 + DocumentRoot /home/<USER>/www/doc
 +</VirtualHost>
 +</code>
 +    - **sur le web : sous-domaines d'un domaine** : pour créer doc.mondomaine.com, sous-domaine de mondomaine.com,<code - doc.mondomaine.com>
 +ServerAdmin administrateur@domaine.fr
 +UseCanonicalName Off
 +LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
 +CustomLog logs/access_log vcommon
 +
 +<VirtualHost *:80>
 + ServerName doc.mondomaine.com
 + DocumentRoot /home/<USER>/www/doc
 +</VirtualHost>
 +</code><code - >
 +<VirtualHost *:80>
 + ServerName localhost
 + ServerAlias *.localhost
 +# DocumentRoot /home/nicolas/www
 + VirtualDocumentRoot /home/nicolas/www/%-2
 +</VirtualHost>
 +
 +#<VirtualHost *:80>
 +# ServerName cloud.localhost
 +# DocumentRoot /home/nicolas/www/cloud
 +#</VirtualHost>
 +</code>
 +  - **Voici un exemple d'organisation** :
 +    * **config** -> Contiendra toute la configuration "magique":
 +      * **auth** -> liens symboliques vers les sous-domaines (subdir*) nécessitant une authentification.
 +      * **ssl** -> liens symboliques vers les sous-domaines (subdir*) nécessitant un accès SSL.
 +    * **logs** -> logs d'accès et logs d'erreur pour le domaine concerné
 +    * **www** -> racine de l'arborescence web où se trouveront nos pages et scripts éventuels et les sous-domaines (subdir*).<code - >
 +mondomaine.tld/
 +|-- config
 +|   |-- auth
 +|   `-- ssl
 +|-- logs
 +|   |-- access.log
 +|   `-- error.log
 +`-- www
 +    |-- subdir1
 +    |-- subdir2
 +    |-- subdir3
 +    `-- subdir4
 +</code>
 +  - **Configuration du domaine mondomaine.com** :
 +    - Pour ce domaine, nous créons les 2 configurations suivantes dans le fichier /etc/apache2/sites-available/mondomaine.com<code - >
 +# Configuration HTTP du domaine mondomaine.com
 +<VirtualHost *:80>
 +        ServerName mondomaine.com
 +        ServerAlias *.mondomaine.com
 +        ServerAlias *.mondomaine.net
 +        ServerAlias *.mondomaine.fr
 +        ServerAlias *.mondomaine.eu
 +        ServerAlias *.mondomaine.info
 +
 +        ServerAdmin webmaster@mondomaine.com
 +
 +        DocumentRoot /var/www/mondomaine.com/www/
 +        <Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </Directory>
 +        <Directory /var/www/mondomaine.com/www/>
 +                Options FollowSymLinks
 +                AllowOverride none
 +                Order allow,deny
 +                allow from all
 +        </Directory>
 +
 +########## Log Directives
 +        ErrorLog /var/www/mondomaine.com/logs/error.log
 +        CustomLog /var/www/mondomaine.com/logs/access.log vhost_combined
 +</VirtualHost>
 +
 +# Configuration HTTPS du domaine mondomaine.com
 +<VirtualHost *:443>
 +        ServerName mondomaine.com
 +        ServerAlias *.mondomaine.com
 +        ServerAlias *.mondomaine.net
 +        ServerAlias *.mondomaine.fr
 +        ServerAlias *.mondomaine.eu
 +        ServerAlias *.mondomaine.info
 +
 +        ServerAdmin webmaster@mondomaine.com
 +
 +        DocumentRoot /var/www/mondomaine.com/www/
 +        <Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </Directory>
 +        <Directory /var/www/mondomaine.com/www/>
 +                Options FollowSymLinks
 +                AllowOverride none
 +                Order allow,deny
 +                allow from all
 +        </Directory>
 +
 +########## Log Directives
 +        ErrorLog /var/www/mondomaine.com/logs/error.log
 +        CustomLog /var/www/mondomaine.com/logs/access.log vhost_combined
 +
 +########## SSL Directives
 +        SSLEngine on
 +        SSLCertificateFile /var/www/mondomaine.com/config/mondomaine.com.pem
 +        SSLCertificateKeyFile /var/www/mondomaine.com/config/mondomaine.com.pem
 +        SSLCACertificateFile /var/www/mondomaine.com/config/ca.crt
 +</VirtualHost>
 +</code>
 +    - Activation du domaine mondomaine.com :<cli prompt='$ '>USER@MACHINE:~$ sudo a2ensite mondomaine.com</cli>
 +    - Redémarrage d'Apache :<cli prompt='$ '>USER@MACHINE:~$ /etc/init.d/apache restart</cli>
 +  - **Cas du vhost par défaut** : Pour gérer le cas d'une requête à destination d'un domaine qui n'est pas hébergé, un vhost par défaut est défini. Il est défini en premier
 +    - Créer un fichier /etc/apache2/site-available/0000-default en y ajoutant la configuration suivante :<code - /etc/apache2/site-available/0000-default>
 +NameVirtualHost *:80
 +NameVirtualHost *:443
 +<VirtualHost *:80>
 +        RewriteEngine on
 +        RewriteRule ^/(.*) http://www.mondomaine.com/$1 [R=301,L]
 +</VirtualHost>
 +</code>On redirige tout le trafic vers le "vrai" domaine. Par exemple, toute requête vers http://ip_du_serveur, traitée par ce vhost, sera visiteur redirigée vers http://www.mondomaine.com/
 +    - On active le vhost :<cli prompt='$ '>USER@MACHINE:~$ a2ensite 0000-default</cli>
 +  - **Règles de comportement** : Nous souhaitons héberger le domaine mondomaine.com.
 +    - Nous devons rediriger mondomaine.com vers www.mondomaine.com.
 +    - Nous voulons pouvoir obtenir, le plus simplement possible, différents sous-domaines. Par exemple :
 +      * blog.domaine.com doit être accessible en HTTP ou en SSL. L'authentification est gérée par l'application elle-même.
 +      * webmail.domaine.com doit être obligatoirement en SSL. L'authentification est gérée par l'application elle-même.
 +      * protected.domaine.com ne sera accessible qu'après authentification, mais l'accès n'est pas forcé en SSL.
 +      * maitredumonde.domaine.com ne sera accessible qu'après authentification, mais l'accès est en plus forcé en SSL.
 +    - Comme nous avons également loué le domaine mondomaine.fr, il faut que les 2 pointent sur le même espace d'hébergement.
 +    - En ce qui concerne les alias de domaines (différentes extensions tld), il est nécessaire de modifier la configuration du vhost en ajoutant les directives ServerAlias. En effet, les domaines n’apparaissant ni en ServerName, ni en ServerAlias seront traités par le vhost par défaut.
 +  - **Utilisation des virtualhosts**
 +</subnumberlist>
 +===== Autres étapes =====
 +
 +===== Conclusion =====
 +
 +===== Problèmes connus =====
 +
 +===== Voir aussi =====
 +
 +  * **(fr)** [[http://publications.jbfavre.org/web/vhosts-automatiques-avec-SSL-et-authentification|Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification]]
 +  * **(en)** [[http://Article|Article]]
 +
 +----
 +//Basé sur << [[http://publications.jbfavre.org/web/vhosts-automatiques-avec-SSL-et-authentification|Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification]] >> par jbfavre.//
Navigation
  • Pages :
    • créer :
QR Code
QR Code Configuration d&#039;hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l&#039;authentification (generated for current page)