在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)。 我们重复上述过程,每个新的服务器实际上是另一个子域(egcdomain.com)。 有没有一种方法可以指定一系列CNAME(例如[a1..a25] .domain.com指向a.domain.com)而不是添加单独的CNAME etnries?

有没有可能在DNS或networking服务器(apache或Nginx)级别处理?

是的,可以在DNS(如果使用BIND)和Apache(部分)/ nginx(完全)两种情况下处理。

BIND支持$ GENERATE关键字,您可以执行以下操作:

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

Apache中,只能使用ServerAlias通配符,而不能使用正则expression式:

 ServerAlias a*.domain.com 

nginx中,您可以使用server_name的正则expression式:

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

DNS只有一个通配符: *

列出区域文件中的所有条目没有任何问题。

我很确定Apache不能在ServerAlias指令中做这样的范围,但是如果nginx能够在它的server指令中处理正则expression式,我不会感到惊讶。

你可以使用seq 1 25生成你的web服务器configuration文件或者你的DNSconfiguration文件,或者使用puppet这样的工具,如果全部用手input的话就太麻烦了。

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

BIND的具体答案已经给出; 但是,如果任何人有一个不同的服务器相同的问题,只能访问的基本知识,我的想法是将地址更改为Xadomain.com / Xbdomain.com,然后使用*通配符