我们有不同的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,然后使用*通配符