Apache-2.2
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 或網路伺服器(apache 或 Nginx)級別處理此問題?
是的,可以在 DNS(如果您使用 BIND)和 Apache(部分)/nginx(完全)中處理此問題。
BIND支持$GENERATE關鍵字,您可以執行以下操作:
$GENERATE 1-10 a$.domain.com CNAME a.domain.com
在Apache中,您只能對ServerAlias使用萬用字元,而不是正則表達式:
ServerAlias a*.domain.com
在nginx中,您可以對server_name使用正則表達式:
server_name ~^a[1-10]\.domain\.com$;
DNS 只有一個萬用字元:
*
在區域文件中列出所有這些條目沒有任何問題。
我很確定 Apache 不能在
ServerAlias
指令中執行類似的範圍,但如果 nginx 可以在其server
指令中處理正則表達式,我不會感到驚訝。如果手動輸入它們太繁重,您可以使用或諸如 puppet 之類的工具來生成您的 Web 伺服器配置或 DNS 配置。
seq 1 25
如果所有這些不同的域都應該執行同一個應用程序,您也可以在應用程序級別執行此操作。(這就是我工作的公司的做法。)