My current configuration of Apache has several name-based virtual hosts
(2 for each domain). One for use with SSL (Port 443) and one for use
without (Port 80).
The problem is that the configuration for all different domains is
exactly the same, except for the ServerName, ServerAdmin, ServerAlias
and DocumentRoot directives. Is there a way I can share the
configuration between multiple virtual hosts?
Here is a copy of my virtual host configuration (of course the domains
were changed):
----------BEGIN----------
NameVirtualHost *:80
NameVirtualHost *:443
#
# Virtual host (domain1.com)
#
<VirtualHost *:80>
ServerName
www.domain1.com
ServerAdmin webmaster.TakeThisOut@domain1.com
ServerAlias domain1.com *.domain1.com
DocumentRoot /home/www/domain1.com
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.[0-9]+$
RewriteCond %{REQUEST_URI} ^/intranet.*$
RewriteRule ^/(.*)$
https://%{SERVER_NAME}/$1 [R,L]
<Directory "/home/www/domain1.com">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /home/www/domain1.com/intranet>
AuthType Basic
AuthName "Intranet"
AuthPAM_Enabled on
AuthPAM_FallThrough off
Order deny,allow
Deny from all
Allow from 192.168.0.0/24
Require valid-user
Satisfy all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName
www.domain1.com
ServerAdmin webmaster.TakeThisOut@domain1.com
ServerAlias domain1.com *.domain1.com
DocumentRoot /home/www/domain1.com
SSLEngine on
SSLCACertificateFile conf/ssl.crt/ca.crt
SSLCertificateKeyFile conf/ssl.key/server.key
SSLCertificateFile conf/ssl.crt/server.crt
<Directory "/home/www/domain1.com">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /home/www/domain1.com/intranet>
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +FakeBasicAuth +StrictRequire
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
AuthType Basic
AuthName "Secured Intranet"
AuthPAM_Enabled on
AuthPAM_FallThrough off
Order deny,allow
Deny from all
Require valid-user
Satisfy any
</Directory>
</VirtualHost>
#
# Virtual host (domain2.com)
#
<VirtualHost *:80>
ServerName
www.domain2.com
ServerAdmin webmaster.TakeThisOut@domain2.com
ServerAlias domain2.com *.domain2.com
DocumentRoot /home/www/domain2.com
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.[0-9]+$
RewriteCond %{REQUEST_URI} ^/intranet.*$
RewriteRule ^/(.*)$
https://%{SERVER_NAME}/$1 [R,L]
<Directory "/home/www/domain2.com">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /home/www/domain2.com/intranet>
AuthType Basic
AuthName "Intranet"
AuthPAM_Enabled on
AuthPAM_FallThrough off
Order deny,allow
Deny from all
Allow from 192.168.0.0/24
Require valid-user
Satisfy all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName
www.domain2.com
ServerAdmin webmaster.TakeThisOut@domain2.com
ServerAlias domain2.com *.domain2.com
DocumentRoot /home/www/domain2.com
SSLEngine on
SSLCACertificateFile conf/ssl.crt/ca.crt
SSLCertificateKeyFile conf/ssl.key/server.key
SSLCertificateFile conf/ssl.crt/server.crt
<Directory "/home/www/domain2.com">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /home/www/domain2.com/intranet>
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +FakeBasicAuth +StrictRequire
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
AuthType Basic
AuthName "Secured Intranet"
AuthPAM_Enabled on
AuthPAM_FallThrough off
Order deny,allow
Deny from all
Require valid-user
Satisfy any
</Directory>
</VirtualHost>
----------END----------
Thank you
Mike Machuidel