所以我得到了这个站点,它被 Apache 2 用作虚拟主机。它有大量的备选域名,这些域名都应该解析到它。
到目前为止,我已经通过在 vhost 配置文件的 ServerAlias 列表中添加额外的域来处理类似的事情。但随着别名域的数量越来越多,该列表变得非常长且难以处理。它还需要分别添加裸域和“www”版本,这(因为我必须记住添加两者)让我成为一个白痴而忘记添加一个或另一个的空间。还没有发生,但是当列表足够长时,像这样的遗漏不会像只有几个域时那样跳出来,所以我担心有一天它是不可避免的。
似乎应该有一种方法可以将虚拟主机配置文件中的别名列表踢到其他可以更轻松地管理它们的地方。即使是每个别名都占一行的文本文件也是一种改进,因为至少这样比用逗号分隔的长行更容易直观地浏览列表。而且似乎应该有一种方法可以让虚拟主机也自动处理“www”子域,而不是需要为每个域手动添加“www”别名。但我一直在寻找这样的东西,还没有找到任何明显的解决方案。
这可能只是我没找对地方,但以防万一——有没有更优雅的方法来处理虚拟主机的 ServerAliases?如果是这样,它是什么?
您可以使用指令来包含来自外部文件的任意配置设置,
Include
而不是您想要从文件中提取的实际选项。(还有一个 mod_perl 选项,如果你是一个老派的 perl 向导 ;-)1.使用
Include
指令ServerAlias
, 像这样包含来自文本文件的列表conf.d/mydomain.conf
;然后生成带有
ServerAlias
指令前缀的列表/etc/httpd/conf/MyDomainServerAlias.list
;ServerAlias mysqdomain.com www2.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdTTTomain.com www.mCCysqdomain.com www.mysqdomain.com
或每行一个,因为这可能更便于检查和编写脚本;
2.您可以使用块动态配置apache
<Perl>
mod_perl
因此,您可以使用任何您喜欢的 Perl 魔法在启动时配置别名列表;-)
3.可能还有其他一些(更简单的 ;-) 方法......
您可以多次重复 vhost 配置文件中的 ServerAlias 行。我认为更接近于一个你不会得到的愚蠢的 text.file。但是,您必须记住添加 www 一个...
如果您在主要上下文中配置您的“包罗万象”站点怎么办?范围?然后,您只需要将ServerAlias用于要成为不同虚拟站点的域。
编写一个程序来为您填写这些行怎么样?在一个类似的应用程序中,我有一个 VHost 每个名字和大约 50 个名字需要处理,我让 Puppet 生成它们。然后我只列出:
它会生成两个 VHost(一个用于 80 端口,一个用于 443 端口)
example.com
和www.example.com
. 这意味着拥有一个充满这些mySite::newSite
行的文件,但这还不错 :)您不必使用 Puppet,任何语言都可以提供帮助。Ruby erb 文件是一个选项。