共享几个VHosts之间的configuration

我正在pipe理一个有几个运行在其上的站点的httpd安装,每个站点在它自己的<VirtualHost>指令中定义。 有几个configurationvariables(其中大部分来自核心以及一些php_flag / php_value ),这些variables与定义的几个站点完全相同。

我希望能够定义一个同时适用于多个<VirtualHost>指令的configuration集(以消除冗余并使服务器维护更容易一些)。

我已经考虑使用<Directory> ,但是我需要设置的许多configuration值不能从<Directory>修改。 我还试图定义另一个<VirtualHost>部分,其中包含我想要共享configuration的所有网站

 <VirtualHost xx.xx.xx.xx:80 yy.yy.yy.yy:80> ...config... </VirtualHost> 

但这只是结果

 VirtualHost xx.xx.xx.xx:80 overlaps with VirtualHost yy.yy.yy.yy:80, the first has precedence, perhaps you need a NameVirtualHost directive 

任何想法我怎么能做到这一点?

在Apache文档中,这被称为大规模VirtualHost配置 。

有几个解决方案:

  • mod_vhost_alias和VirtualDocumentRoot指令,但通常太简单了,管理DocumentRoot和域名之外的其他变体相当困难。
  • 先进的mod_rewrite技巧 ,因为mod_rewrite是瑞士刀,可以做任何事情,但是当mod_rewrite完成时,一切看起来相当复杂。
  • mod_macro是一个模块,允许使用可在虚拟主机之间重复使用的参数的无限列表(例如),因此您可以添加比DocumentRootserverName更多的参数,并在仆人Vhost之间共享单个配置文件。