I have a large httpd.conf file, most of which is virtual hosts. Is there a way to make a file, say virtual_hosts.conf, and include it from httpd.conf? I've googled a bit, but can't seem to find much as far as includes, just module loading.
Information on apache httpd.conf files can be found at here.
Some snippets have been copied from this website to ensure that the information is not lost if the link would deprecated:
Include /usr/local/apache2/conf/ssl.conf Include /usr/local/apache2/conf/vhosts/*.conf
Include conf/ssl.conf Include conf/vhosts/*.conf
I separate each virtual host into it's own vhost config file, that way you don't wind up searching through a giant document looking for one little directive. Similar to Quanta's post:
Just place it as the last line in your httpd.conf
then just split your single vhosts.conf into individual files for each domain, i.e.
domain1.conf domain2.conf domain3.conf etc....
much easier to manage. -sean
You can do it with Include directive:
Also you can use IncludeOptional directive
So in such case there can be no any appropriate file. Or as exactly said in documentation,
It works identically to the Include directive, but it will be silently ignored (instead of causing an error) if wildcards are used and they do not match any file or directory or if a file path does not exist on the file system.
Pay attention that some versions of Apache really fails to start in cases when "file path does not exist on the file system". Like on example above if there is no directory
So, in such a problem you may be restricted in fact in safe usage of this directive by non-using some subdirectories when you are not sure if they exists
Like such a manner:
<VirtualHost *:80> DocumentRoot "/var/www/example.com" ServerName "example.com" ServerAlias "www.example.com" "example.com" ... IncludeOptional /var/www/example.com/*.httpd.conf </VirtualHost> <VirtualHost *:80> DocumentRoot "/var/www/other.org" ServerName "other.org" ServerAlias "www.other.org" "other.org" ... IncludeOptional /var/www/other.org/*.httpd.conf </VirtualHost>
When some like
will works good (have you any file matching given mask or not), but
will fail if there is no such subdirectory
will fail too if at least one of sites will not have exactly specified file
extra.httpd.conf. Wildcards are the key.
So, if common site configuration created and can be recreated automatically by some template, but some concrete site requires an extra apache configuration that cant be wrote just in a .htaccess file - you can use this approach.