Comment gérer les hôtes virtuels dynamiques avec Apache et le module mod_vhost_alias

Comment gérer les hôtes virtuels dynamiques avec Apache et le module mod_vhost_alias

Le serveur Web Apache a la possibilité de desservir plusieurs sites Web à partir de la même adresse IP, en utilisant des hôtes virtuels. Chaque hôte virtuel peut être configuré dans le fichier de configuration du serveur principal, ou, grâce au Inclure ou la Incluez les opérations
directives, dans son propre dédié. Lorsque le nombre d'hôtes virtuels augmente, leur gestion commence à devenir gênante. Si leur configuration est assez similaire, nous pouvons les gérer dynamiquement, grâce au mod_vhost_alias module. Dans ce tutoriel, nous verrons comment le faire.

Dans ce tutoriel, vous apprendrez:

  • Qu'est-ce qu'un hôte virtuel Apache
  • Comment vérifier si le module mod_vhost_alias est activé
  • Comment charger le module MOD_VHOST_ALIAS sur Debian et Red Hat Family of Distributions
  • Comment gérer les hôtes virtuels dynamiques à l'aide du module mod_vhost_alias

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel Serveur Web Apache
Autre Autorisation
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Un aperçu rapide de l'hôte virtuel

Comme nous l'avons déjà mentionné dans l'introduction, le serveur Web Apache a la capacité de desservir plusieurs sites Web à l'aide d'hôtes virtuels et la configuration DNS appropriée. Celui ci-dessous est une définition de l'hôte virtuel minimal mais typique:

 Servername www.test.Test de LAN Serveralias.lan documentroot / var / www / www.test.lan  


Cette configuration gérera les demandes d'utilisateur au www.test.lan Adresse, qui est la valeur que nous définissons avec le Nom du serveur directive, mais aussi pour test.lan, qui est le Serveurs. Avec le Document de document Directive Nous définissons le répertoire de base à partir duquel les fichiers associés à l'hôte virtuel doivent être servis, qui dans ce cas est / var / www / www.test.lan.

Un hôte virtuel peut être défini dans le fichier de configuration du serveur principal (/ etc / httpd / conf / httpd.confli sur la famille des distributions Red Hat, / etc / apache2 / apache2.confli sur Debian Systems et ses dérivés), ou peut être écrit dans son propre fichier et inclus à partir de la configuration principale. En effet, si nous examinons la configuration Apache sur les distributions principales Linux, nous pouvons voir que les fichiers hôtes virtuels sont inclus via le Incluez les opérations Directive de certains répertoires spécifiques.

Sur Fedora et les distributions connexes, par exemple, nous avons trouvé la configuration suivante à la fin du fichier:

# Chargez des fichiers de configuration dans le "/ etc / httpd / conf.D "Répertoire, le cas échéant. Inclure la confr opérationnelle.d/*.confli 

Sur Debian, à la place:

# Inclure les configurations de l'hôte virtuel: inclut les sites optionnés / * *.confli 

Nous pouvons remarquer que le chemin d'accès à partir duquel les fichiers doivent être inclus est relatif à la racine du serveur. Le Incluez les opérations La directive est utilisée pour inclure les fichiers hôte virtuels qui doivent être nommés avec le .confli suffixe. Ici le Inclure La directive pourrait également être utilisée; Quelle est la différence entre les deux? Les deux fonctionnent exactement de la même manière, le Incluez les opérations La directive, cependant, ne provoque pas d'erreur lorsque les caractères génériques sont utilisés (comme dans ce cas) et qu'aucune correspondance n'est trouvée, ou si un chemin n'existe pas, en général.

Pour que cette configuration fonctionne, une entrée DNS appropriée doit également être configurée. Si vous travailliez localement, cependant, nous pourrions simplement ajouter une ligne dans le / etc / hôtes déposer. Par exemple:

127.0.0.1 www.test.lan 

Lorsque les configurations des hôtes virtuels commencent à augmenter, leur gestion pourrait facilement devenir gênante. Une solution possible à ce problème consiste à utiliser des hôtes virtuels générés dynamiquement. Voyons comment le faire avec le mod_vhost_alias module.

Chargement du module mod_vhost_alias

La première chose que nous devons faire est de vérifier si le mod_vhost_alias Le module est activé. La commande que nous voulons exécuter à cette fin dépend de la distribution que nous utilisons. Sur Fedora et autre distribution de la famille Red Hat, nous pouvons utiliser ce qui suit:

$ httpd -m | grep -i vhost_alias 

Sur Debian, à la place:

$ apachectl -m | grep -i vhost_alias 

En passant le -M option au httpd (ou apachectl) Commande, nous obtenons une liste de modules statiques et partagés chargés; Pipoting la sortie en grep, nous pouvons vérifier si le module dont nous avons besoin est dedans. Dans le cas où le module n'est pas chargé, sur Debian et ses dérivés, nous pouvons exécuter la commande suivante:

$ sudo a2enmod vhost_alias && sudo systemctl restart apache2 


Le a2enmod La commande crée un lien symbolique vers le / etc / apache2 / mods-disponible / mod_vhost_alias.donc déposer dans le / etc / apache2 / mods compatible répertoire (de manière similaire à ce que le a2ensite La commande fait pour les configurations d'hôtes virtuels), c'est là que les modules sont chargés à partir de.

Sur la famille de distribution Red Hat, la liste des modules de base chargés se trouve dans le / etc / httpd / confre.modules.d / 00-base.confli déposer. Chaque module est chargé avec le Module de chargement directif. Si pour une raison quelconque vhost_alias La ligne du module (67) est commentée, supprimez simplement le commentaire, enregistrez la modification et rechargez le service HTTPD:

$ sudo systemctl redémarrer httpd 

Une fois le module activé, nous pouvons procéder avec la configuration réelle.

Création d'hôtes virtuels dynamiques

La configuration que nous créons est basée sur le fait que le mod_vhost_alias Le module stocke les composants séparés par DOT du nom d'hôte virtuel demandé dans certaines variables que nous pouvons référencer et interpoler dans la chaîne que nous utilisons pour définir la racine du document hôte virtuel. Si nous prenons le www.test.lan hôte virtuel à titre d'exemple, nous aurons:

  • % 0: l'intégralité du nom d'hôte virtuel
  • % 1: «www»
  • % 2: «test»
  • % 3: «LAN»

Des nombres négatifs pourraient également être utilisés, donc, par exemple, nous aurons:

  • % -1 La dernière partie du nom, dans ce cas «LAN»
  • % -2 L'avant-dernier partie, dans ce cas «test»

Il est même possible de spécifier chaque composant du nom d'hôte virtuel à partir d'un certain port en arrière ou en arrière. Par exemple, % 2+ signifie «à partir de la deuxième partie» et % -2+ 'provoque l'avant-dernier composant et tous les composants qui précèdent à être inclus.

En supposant que nous voulons utiliser le / var / www / Répertoire En tant que base de tous nos hôtes virtuels, nous pourrions créer la configuration suivante dans un fichier, appelons-le dynamic_vhost.confli:

 UseCanonicalName off virtualDocumentRoot "/ var / www /% - 2"  

Expliquons la configuration ci-dessus. Tout d'abord, nous avons utilisé le Nom usécanique Directive et la définir sur «off»: nous l'avons fait pour nous assurer que le nom du serveur est tiré de l'en-tête «Host» »dans la demande HTTP. Nous avons utilisé le VirtualDocumentRoot directif. Cette directive est nécessaire pour définir un chemin dynamique pour la racine du document d'un hôte virtuel, par l'utilisation des variables que nous avons vues au-dessus desquelles sont évaluées lors de la gestion d'une demande.

Quand le www.test.lan L'hôte virtuel est demandé, automatiquement les fichiers à servir seront recherchés dans le / var / www / test annuaire. L'utilisation du % -2 L'indice négatif a l'avantage que la configuration fonctionnera à la fois www.test.lan et pour test.lan, Puisque ça marche à l'envers.

Ceci est évidemment juste un exemple de ce qui peut être accompli en utilisant le mod_vhost_alias module, et vous pouvez créer la configuration qui vous convient le mieux.



Désavantages

Ce type de configuration est assez pratique si tout l'hôte virtuel que nous gérons est assez similaire et nécessite la même configuration, mais a ses inconvénients, ce qui peut être assez pertinent en fonction de la situation. Tout d'abord, il ne sera pas possible de spécifier des paramètres spécifiques à VirtualHost, sinon avec l'utilisation de .fichiers htaccess); Ce type de configuration causera également des problèmes s'ils sont utilisés avec des configurations d'hôte virtuels standard. Enfin, les demandes de tous les hôtes virtuelles seront enregistrées dans le même fichier.

Conclusions

Le serveur Web Apache est en mesure de servir plusieurs sites Web et ressources d'une seule machine grâce à l'utilisation d'hôtes virtuels. Lorsque le nombre d'hôtes virtuels commence à augmenter en nombre, il peut devenir difficile de les gérer si chacun a son propre fichier / section de configuration. S'ils ont des paramètres similaires, nous pouvons solution ce problème en utilisant des hôtes virtuels générés dynamiquement, en profitant du mod_vhost_alias module.

Dans cet article, nous avons vu comment vérifier si ce module est activé et comment l'activer dans les familles des distributions Debian et Red Hat. Nous avons également vu comment les composants du nom d'hôte virtuel sont stockés en variables et comment les utiliser pour créer des hôtes virtuels dynamiques. Enfin, nous avons vu quels sont les inconvénients de l'utilisation de cette configuration.

Tutoriels Linux connexes:

  • Comment migrer Apache vers Nginx en convertissant les objets VirtualHosts en…
  • Firefox sur Linux - Votre connexion n'est pas sécurisée
  • Comparaison des MPM de Linux Apache PreFork vs Worker
  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment installer ubuntu 20.04 sur VirtualBox
  • Liste des meilleurs outils Kali Linux pour les tests de pénétration et…
  • Les hôtes virtuels basés sur IP et le nom Apache expliqués
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?