如何使用多个通配符 apache vhosts 配置

如何使用多个通配符 apache vhosts 配置

我知道可以在 apache ServerAlias 上使用通配符。我尝试配置 3 组,但配置会退回到一个虚拟主机,而不是每个单独的虚拟主机。

开发环境

ServerName dev.somedomain.com
ServerAlias dev.*.somedomain.com
docroot /var/www/dev.somedomain.com

发布环境

ServerName release.somedomain.com
ServerAlias release.*.somedomain.com
docroot /var/www/release.somedomain.com

生产环境

ServerName somedomain.com
ServerAlias www.somedomain.com *.somedomain.com www.*.somedomain.com
docroot /var/www/somedomain.com

但当我浏览 dev.test.somedomain.com 时,我得到的是 somedomain.com 的内容(而不是 dev.somedomain.com)。我在这里遗漏了什么?

答案1

正如我在评论中所说,您可以通过更改 Apache 配置中的 VirtualHosts 顺序来解决此问题。由于这是不可能的,我将向您指出 3 种替代方案:

  1. 使用mod_vhost_alias。这也许不是一个选择,但仍然如此。

  2. 为生产/开发/发布使用单独的 IP 地址。如果您在内部网络/NAT 后面,这应该相对容易。

  3. 在 Apache 中为每个 VHost 使用单独的端口,并将 HAProxy 实例放在重定向到正确端口的同一台服务器上。在 HAProxy 中,您可以更好地对 Host 标头进行正则表达式匹配。

相关内容