Apache-2.2

CNAME 中的處理範圍

  • June 18, 2012

我們有不同的 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

如果所有這些不同的域都應該執行同一個應用程序,您也可以在應用程序級別執行此操作。(這就是我工作的公司的做法。)

引用自:https://serverfault.com/questions/399681