Shortening Apache Configs using mod_macro

It is possible to use macros in the Apache config files to shorten them and make them easier to read and manage. To use this you have to install mod_macro if it’s not already installed in your distribution.

Sample mod_macro usage

<Macro VHost $customer $domain>
<VirtualHost $domain:80>
  ServerName $domain
  ServerAlias www.$domain
  DocumentRoot /vaw/www/$customer/htdocs/$domain/
  ScriptAlias /cgi-bin/ /var/www/$customer/cgi-bin/
  ErrorLog /var/log/apache/$customer/logs/$domain-error.log
  CustomLog /var/log/apache/$customer/logs/$domain-access.log combined
  <Directory /var/www/$customer/cgi-bin/>
    Options ExecCGI,noIndexes
  </Directory>
</VirtualHost>
</Macro>

Use VHost customer_A example.com
Use VHost customer_B example.net
Use VHost customer_C example.org

Another example

<Macro PasswordProtect>
AuthName "Restricted area"
AuthType Basic
AuthUserFile /var/www/.htpasswd
require valid-user
</Macro>

<Directory /var/www/domain/htdocs>
Options Indexes
</Directory>
<Directory /var/www/domain/htdocs/internal>
Use PasswordProtect
Options -Indexes
</Directory>
<Directory /var/www/domain/htdocs/downloads>
Use PasswordProtect
Options +FollowSymLinks
</Directory>

More info can be found on the mod_macro website.