在几个VHost之间共享配置

时间:2013-09-10 08:42:55

标签: apache configuration web-config virtualhost httpd.conf

我正在管理一个httpd安装,其上运行着几个站点,每个站点都在其自己的<VirtualHost>指令中定义。有几个配置变量(大多数来自core以及一些php_flag / php_value)对于定义的几个站点完全相同。

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

我考虑使用<Directory>,但我需要设置的许多配置值无法在<Directory>内修改。我还试图定义另一个<VirtualHost>部分,其中包含我想要共享配置的所有网站

<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

知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

在apache文档中,这称为mass VirtualHost configuration

存在多种解决方案:

  • mod_vhost_alias,带有VirtualDocumentRoot说明,但通常过于简单并且管理除DocumentRoot之外的其他变体,域名非常难。
  • advanced mod_rewrite tricks,因为mod_rewrite是一把瑞士刀,可以做任何事情,但是当用mod_rewrite完成时,一切看起来都很复杂。
  • mod_macro是一个允许使用无限宏列表的模块,其中的参数可以在虚拟主机之间重用(例如),因此您可以添加比DocumentRoot和{{1}更多的参数在serval Vhosts之间共享单个配置文件。