¿Es posible escribir una configuration compartida para varios VirtualHosts?

Mi intención aquí es evitar una gran cantidad de código repetitivo.

Esencialmente lo que estoy tratando de hacer es usar el mismo bloque de configuration de SSL para varias inputs de VirtualHost …

<IfModule mod_ssl.c> <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> SSLCertificateFile /usr/share/ssl/certs/example/host.pem SSLCertificateKeyFile /usr/share/ssl/certs/example/host.key SSLCertificateChainFile /usr/share/ssl/certs/example/host.cert <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown <VirtualHost 999.99.9.999:443> ServerName subdomain1.example.com DocumentRoot /var/www/subdomain1 </VirtualHost> <VirtualHost 999.99.9.999:443> ServerName subdomain2.bonfirehub.com DocumentRoot /var/www/subdomain2 </VirtualHost> </IfModule> 

Ahora esta configuration no funciona para mí, pero creo que ilustra lo que estoy tratando de lograr. El siguiente paso ideal sería abstraer esta configuration común para cada VirtualHost en un file separado y simplemente cargarlo a través de una directiva de inclusión.

Si no tal vez alguien puede sugerir otro método de configuration.

El objective para mí es tener una configuration común compartida, ya que tengo la intención de añadir varias inputs de VirtualHost una determinada IP que sólo varían según DocumentRoot y ServerName. Específicamente que el subdominio ServerName es lo único que cambia (tenga en count que estoy usando un cert de comodín) por lo que quiero configurar una configuration compartida.

He averiguado esto pero lo dejaré en el caso de que alguien encuentre esto útil.

 # VirtualHost <IfModule mod_ssl.c> <VirtualHost 999.99.9.999:443> ServerName subdomain1.example.com DocumentRoot /var/www/subdomain1 Include example.com-ssl.conf </VirtualHost> <VirtualHost 999.99.9.999:443> ServerName subdomain2.example.com DocumentRoot /var/www/subdomain2 Include example.com-ssl.conf </VirtualHost> </IfModule> # Shanetworking Config File ServerAdmin webmaster@localhost <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. # If both key and certificate are stonetworking in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /usr/share/ssl/certs/*.example.com/host.pem SSLCertificateKeyFile /usr/share/ssl/certs/*.example.com/host.key # Server Certificate Chain: # Point SSLCertificateChainFile at a file containing the # concatenation of PEM encoded CA certificates which form the # certificate chain for the server certificate. Alternatively # the referenced file can be the same as SSLCertificateFile # when the CA certificates are directly appended to the server # certificate for convinience. SSLCertificateChainFile /usr/share/ssl/certs/*.example.com/host.cert <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 

Me di count de que mi bloque de configuration original en la parte superior faltaba algún código. Mi única otra pregunta de seguimiento sería, en lugar de tener que escribir

 Include example.com-ssl.conf 

En cada VirtualHost no hay una manera de que todos ellos incluyen ese file?