The HTTPD server has a configuration file. This has some great facilities for making it easy to manage the contents of the configuration file. In summary these are
- Ability to include files into the configuration
- Define and use symbols
- If then..
- Use of regular expressions
Use include files
You can use Include
- Include /usr/colin/a.conf an explicit, fully qualified path.
- Include conf/ssl.conf relative to the ServerRoot directory (which you specify at start up).
- Include conf/vhosts/*.conf multiple files in the directory.
If the files do not exist, the server will fail to start.
You can also use IncludeOptional
if the files do not exist, the processing continues
Define and use symbols
You can use Define
- Define symbol
- Define symbol myvalue
Use the symbol
Define myvalue “mydata”
DocumentRoot “/var/%{myvalue}”
If symbol has been Defined
You can check to see if a symbol has been defined
<
IfDefine>
symbol>
…</IfDefine>
<IfDefine !symbol>
…
</IfDefine>
Use a symbol in an if
<If %{v} == “yes”>
…
</if>
If processing
You can use
- <IfDefined.. to determine if a symbol has been defined
- <If to use value
- <IfDirective. Check to see if the directive was specified in a -D parameter at startup.
You can do
<If … >
…
</If>
You can do
<If ..>
Error ” message “
</If>
This produces
AH00526: Syntax error on line … of /u/mqweb3/conf…
and ends. It does not continue past this.
Regular expressions
Within many of the statements you can use regular expressions, see Apache Documentation and Wikipedia. For example, all .gif and .jpg files under any “images” directory could be written as “/images/.*(jpg|gif)$
“.
Packaging files
If you have
Listen 1834
<VirtualHost *:1834>
…
</VirtualHost>
<VirtualHost *:1834>
…
</VirtualHost>
The second <VirtualHost is ignored.
Multiple <Location..> for the same resource name do not work.
Try to put common definitions in one file and include them where needed, for example the list of TLS certificates.
If the same value is used in multiple configuration files, make it a variable and set it once. If it is changed, it will be picked up automatically. You can display the configuration to see what is actually being used.
3 thoughts on “HTTPD configuring the config file”