Apache-2.2

管理大量 Apache vhost ServerAliases

  • May 13, 2012

所以我有這個站點,它被 Apache 2 用作虛擬主機。它有大量的替代域名,都應該解析到它。

到目前為止,我已經通過在 vhost 配置文件的 ServerAlias 列表中添加額外的域來處理此類事情。但隨著別名域的數量越來越多,該列表變得非常長且難以處理。它還需要分別添加裸域和“www”版本,這(因為我必須記住添加兩者)為我留出了空間,讓我成為一個白痴而忘記添加一個或另一個。還沒有發生,但是當列表足夠長時,這樣的遺漏不會像只有幾個域時那樣突然出現在你身上,所以我擔心有一天它是不可避免的。

似乎應該有一種方法可以將別名列表從虛擬主機配置文件中踢出到其他可以更容易管理的地方。即使是每個別名都在其自己的行上的文本文件也會是一種改進,因為至少在視覺上掃描列表比使用逗號分隔的長行更容易。而且似乎應該有一種方法可以為虛擬主機自動處理“www”子域,而不是需要為每個域手動添加一個“www”別名。但我一直在尋找這樣的東西,還沒有找到任何明顯的解決方案。

這可能只是我沒有找對地方,但以防萬一——有沒有更優雅的方式來處理虛擬主機的 ServerAliases?如果是這樣,那是什麼?

您可以使用該指令從外部文件中包含任意配置設置,而不是Include您要從文件中提取的實際選項。(還有一個 mod_perl 選項,如果你是老派 perl 嚮導 ;-)

**1.**使用Include 指令ServerAlias,像這樣包含來自文本文件的列表conf.d/mydomain.conf

<VirtualHost *:80>
   ServerName www.mydomainname.com 
   # instead of ServerAlias, include a file containing those directives
   Include /etc/httpd/conf/MyDomainServerAlias.list
...
</VirtualHost>

然後生成帶有ServerAlias前綴的指令的列表到

/etc/httpd/conf/MyDomainServerAlias.list;

ServerAlias mysqdomain.com www2.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdTTTomain.com www.mCCysqdomain.com www.mysqdomain.com

或每行一個,因為這可能更方便檢查和編寫腳本;

ServerAlias mysqdomain.com 
ServerAlias www.mysqdomain2.com 
ServerAlias mysqdomain2.com 
ServerAlias www.mysqdomain.com

**2.**您可以使用塊動態配置apache<Perl>``mod_perl

<Perl>
 $ServerName = `hostname`;
 $ServerAlias = 'somethingelse.com';
 </Perl>

因此,您可以使用任何您喜歡的 Perl 嚮導在啟動時配置別名列表;-)

**3.**可能是其他一些(更簡單的;-)方式……

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