1

我正在管理一个 httpd 安装,上面运行着几个站点,每个站点都在它自己的<VirtualHost>指令中定义。对于定义的几个站点,有几个配置变量(其中大部分来自核心以及一些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

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

4

1 回答 1

4

在 apache 文档中,这称为大规模 VirtualHost 配置

存在几种解决方案:

  • mod_vhost_alias,有VirtualDocumentRoot说明,但它通常太简单了,管理其他变体而不是DocumentRoot域名非常困难。
  • 高级 mod_rewrite 技巧,因为 mod_rewrite 是一把瑞士刀,可以做任何事情,但是当使用 mod_rewrite 完成时,一切似乎都非常复杂。
  • mod_macro是一个模块,它允许使用具有可在虚拟主机之间重用的参数的无限宏列表(例如),因此您可以添加更多的参数DocumentRootServerName并在多个虚拟主机之间共享单个配置文件。
于 2013-09-10T15:14:07.250 回答