<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_macro

Langues Disponibles:  en  |  fr 

Description:Ce module permet d'utiliser des macros dans les fichiers de configuration Apache.
Statut:Base
Identificateur�de�Module:macro_module
Fichier�Source:mod_macro.c

Sommaire

Ce module permet d'utiliser des macros dans les fichiers de configuration � l'ex�cution du serveur HTTP Apache afin de faciliter la cr�ation de nombreux blocs de configuration similaires. Quand le serveur d�marre, les macros sont ex�cut�es avec les param�tres fournis, et le r�sultat obtenu est trait� au m�me titre que le reste du fichier de configuration.

Directives

Sujets

top

Utilisation

On d�finit une macro � l'aide des blocs <Macro> qui contiennent la portion de votre configuration qui intervient de mani�re r�p�titive, y compris les variables pour les parties qui devront �tre substitu�es.

Par exemple, vous pouvez utiliser une macro pour d�finir un bloc <VirtualHost>, afin de pouvoir d�finir de nombreux serveurs virtuels similaires :

<Macro VHost $name $domain>
<VirtualHost *:80>
    ServerName $domain
    ServerAlias www.$domain

    DocumentRoot /var/www/vhosts/$name
    ErrorLog /var/log/httpd/$name.error_log
    CustomLog /var/log/httpd/$name.access_log combined
</VirtualHost>
</Macro>

Comme les directives de configuration httpd, les noms des macros sont insensibles � la casse, � la diff�rence des variables qui y sont, elles, sensibles.

Vous pouvez alors invoquer cette macro autant de fois que vous le voulez pour cr�er des serveurs virtuels

Use VHost example example.com
Use VHost myhost hostname.org
Use VHost apache apache.org

UndefMacro VHost
    

Au d�marrage du serveur, chacune de ces invocations Use sera remplac�e par une d�finition de serveur virtuel compl�te, comme d�crit dans la d�finition de la Macro.

La directive UndefMacro permet d'�viter les conflits de d�finitions qui pourraient provenir de l'utilisation ult�rieure de macros contenant les m�mes noms de variables.

Vous trouverez une version plus �labor�e de cet exemple plus loin dans la section Exemples.

top

Conseils

Les noms de param�tres doivent commencer par un sigil tel que $, %, ou @, de fa�on � ce qu'ils soient clairement identifiables, mais aussi afin de faciliter les interactions avec les autres directives, comme la directive de base Define. Dans le cas contraire, vous recevrez un avertissement. En tout �tat de cause, il est conseill� d'avoir une bonne connaissance globale de la configuration du serveur, afin d'�viter la r�utilisation des m�mes variables � diff�rents niveaux, ce qui peut �tre � l'origine de confusions.

Les param�tres pr�fix�s par $ ou % ne sont pas �chapp�s. Les param�tres pr�fix�s par @ sont �chapp�s entre guillemets.

Evitez de pr�fixer un param�tre par le nom d'un autre param�tre (par exemple, pr�sence simultan�e des param�tres $win et $winter), car ceci peut introduire de la confusion lors de l'�valuation des expressions. Si cela se produit, c'est le nom de param�tre le plus long possible qui sera utilis�.

Si vous d�sirez ins�rer une valeur dans une cha�ne, il est conseill� de l'entourer d'accolades afin d'�viter toute confusion :

<Macro DocRoot ${docroot}>
    DocumentRoot /var/www/${docroot}/htdocs
</Macro>
top

Exemples

D�finition de serveurs virtuels

Un exemple typique d'utilisation de mod_macro est la cr�ation dynamique de serveurs virtuels.

## D�finition d'une macro VHost pour les configurations r�p�titives

<Macro VHost $host $port $dir>
  Listen $port
  <VirtualHost *:$port>

    ServerName $host
    DocumentRoot $dir

    # Racine des documents publique
    <Directory $dir>
      Require all granted
    </Directory>

    # restriction d'acc�s au sous-r�pertoire intranet.
    <Directory $dir/intranet>
      Require ip 10.0.0.0/8
    </Directory>
  </VirtualHost>
</Macro>

## Utilisation de la macro VHost avec diff�rents arguments.

Use VHost www.apache.org 80 /vhosts/apache/htdocs
Use VHost example.org 8080 /vhosts/example/htdocs
Use VHost www.example.fr 1234 /vhosts/example.fr/htdocs

Suppression d'une d�finition de macro

Il est recommand� de supprimer la d�finition d'une macro apr�s l'avoir utilis�e. Ceci permet d'�viter les confusions au sein d'un fichier de configuration complexe o� des conflits entre noms de variables peuvent survenir.

<Macro DirGroup $dir $group>
  <Directory $dir>
    Require group $group
  </Directory>
</Macro>

Use DirGroup /www/apache/private private
Use DirGroup /www/apache/server  admin

UndefMacro DirGroup
top

<Macro> Directive

Description:D�finition d'une macro dans un fichier de configuration
Syntaxe: <Macro nom [par1 .. parN]> ... </Macro>
Contexte:configuration du serveur, serveur virtuel, r�pertoire
Statut:Base
Module:mod_macro

La directive Macro permet de d�finir une macro dans un fichier de configuration Apache. Le premier argument est le nom de la macro, et les arguments suivants sont les param�tres. Il est de bon aloi de pr�fixer les noms des param�tres d'une macro avec un caract�re parmi '$%@', et d'�viter d'en faire de m�me avec les noms de macros.

<Macro LocalAccessPolicy>
  Require ip 10.2.16.0/24
</Macro>

<Macro RestrictedAccessPolicy $ipnumbers>
   Require ip $ipnumbers
</Macro>
    
top

UndefMacro Directive

Description:Undefine a macro
Syntaxe:UndefMacro name
Contexte:configuration du serveur, serveur virtuel, r�pertoire
Statut:Base
Module:mod_macro

La documentation de cette directive n'a pas encore t traduite. Veuillez vous reporter la version en langue anglaise.

top

Use Directive

Description:Utilisation d'une macro
Syntaxe:Use nom [valeur1 ... valeurN]
Contexte:configuration du serveur, serveur virtuel, r�pertoire
Statut:Base
Module:mod_macro

La directive Use permet d'utiliser une macro. La macro consid�r�e est expans�e. Son nombre d'arguments doit �tre �gal au nombre de param�tres pr�cis�s dans sa d�finition. Les valeurs pass�es en argument sont attribu�es aux param�tres correspondants et substitu�es avant l'interpr�tation du texte de la macro.

Use LocalAccessPolicy
...
Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"
    

est �quivalent, avec les macros d�finies ci-dessus � :

Require ip 10.2.16.0/24
...
Require ip 192.54.172.0/24 192.54.148.0/24
    

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.