CNAME 中的处理范围

CNAME 中的处理范围

我们有不同的 CNAME 集指向不同的subdomains。这些subdomains(a.domain.com,b.domain.com)指向不同机器上的不同 IP。

# Server A
a1.domain.com pointing to a.domain.com
a2.domain.com pointing to a.domain.com
..
aN.domain.com pointing to a.domain.com

# Server B
b1.domain.com pointing to b.domain.com
b2.domain.com pointing to b.domain.com
..
bN.domain.com pointing to b.domain.com

目前,我们必须针对单个子域 (a.dominan.com) 添加单独的 CNAME 条目(例如 a1... aN)。我们对每个新服务器重复上述过程,这些新服务器实际上是另一个子域(例如 cdomain.com)。有没有办法指定一系列 CNAME(例如 [a1..a25].domain.com 指向 a.domain.com),而不是添加单独的 CNAME 条目?

是否有可能在 DNS 或 Web 服务器(apache 或 Nginx)级别处理这个问题?

答案1

是的,可以在 DNS(如果您使用 BIND)和 Apache(部分)/nginx(完全)中处理这个问题。

绑定支持$生成关键字,您可以执行以下操作:

$GENERATE 1-10 a$.domain.com CNAME a.domain.com

阿帕奇您只能使用通配符服务器别名,不是正则表达式:

ServerAlias a*.domain.com

nginx你可以使用正则表达式服务器名称

server_name ~^a[1-10]\.domain\.com$;

答案2

DNS 只有一个通配符:*

在区域文件中列出所有这些条目并没有错。

我很确定 Apache 无法在指令中执行这样的范围,但如果 nginx 可以在其指令ServerAlias中处理正则表达式,我也不会感到惊讶。server

你可以产生seq 1 25如果手动输入所有内容太过繁重,您可以使用 puppet 之类的工具来修改您的 Web 服务器配置或 DNS 配置。

如果所有这些不同的域都应该运行同一个应用程序,您也可以在应用程序级别执行此操作。(这就是我工作的公司的做法。)

答案3

已经给出了 BIND 特定的答案;但如果有人在其他服务器上遇到同样的问题,并且只能访问基本内容,我的想法是将地址更改为 Xadomain.com / Xbdomain.com,然后使用 * 通配符

相关内容