Apache 子域名和现有的通配符子域名

Apache 子域名和现有的通配符子域名

因此我有一个现有的通配符 DNS A 记录和子域虚拟服务器设置如下

DocumentRoot /path/to/code
<Directory "/path/to/code">
allow from all
Options +Indexes
</Directory>

ServerName existing.domain.co.uk
ServerAlias *.domain.co.uk

...我现在想添加另一个虚拟服务器,它以相同的方式工作,但带有子子域,以便我可以从类似的东西访问代码库的分支monkeys.alt.domain.co.uk

DocumentRoot /path/to/altcode
<Directory "/path/to/altcode">
allow from all
Options +Indexes
</Directory>

ServerName alt.domain.co.uk
ServerAlias *.alt.domain.co.uk

在 DNS 区域文件中,我已将另一个来自 *.alt 的 A 记录添加到 IP(恰好与 * A 记录是同一个 IP)。

现在我认为发生的情况是,现有的通配符正在拾取monkeys.alt.domain.co.uk并将其发送到现有的虚拟服务器而不是新的虚拟服务器。

我的问题:我如何让流量monkeys.alt.domain.co.uk转至新的“alt”虚拟服务器?

答案1

Apache 处理虚拟主机的顺序与读取配置的顺序相同。因此,如果它先读取,ServerAlias *.domain.co.uk则任何 sub 或 sub.sub.domain 都将匹配。如果 Apache 可以先读取,ServerAlias *.alt.domain.co.uk则 alt.domain.co.uk 的任何子域都将匹配,但不会匹配existing.domain.co.uk,后者将匹配下一个 vHost。

因此,如果您在同一个文件中描述了两个虚拟主机,请将第二个虚拟主机 (monkey.alt vHost) 放在主 vHost 之前。如果它们位于不同的文件中,请重命名该文件,以便首先读取 monkey vHost 配置文件(例如,在开头添加 0)。

相关内容