Ubuntu

CNAME:如何設置 DNS 以根據網站返回 A 記錄?

  • November 5, 2011

我有一個關於設置伺服器的問題。

假設我有多個網站要託管。

foo.com
bar.com
hello.com

我可能會或可能不會為他們提供特定的伺服器。假設任意配置是這樣的(使用相應的域註冊商)

foo.com  A  1.1.1.1
bar.com  A  1.1.1.2
hello.com A 1.1.1.1

我想要的是給每個網站一個通用域來指向而不是 IP(因為 IP 可以改變)。

類似於以下內容。

foo.com CNAME service.com
bar.com CNAME service.com
hello.com CNAME service.com

根據我目前對 DNS 的了解,

查詢

  1. 我想我需要在 service.com 上設置一個 DNS 伺服器,它會返回相應的記錄。
  • 它是否正確?
  1. 如果是這樣,如果域由域註冊商持有怎麼辦?比如dreamhost。那怎麼處理呢?
  • 由於它們響應 DNS 查詢,我如何插入該間接層?

從客戶端的角度實現透明的伺服器遷移

最終我想要實現的是,如果有一天我要從另一台伺服器託管 hello.com,我只需要在伺服器上的一個地方進行修改,而不是告訴客戶端更改他們的 DNS 配置。

附加資訊:

我使用 rackspace,他們也有一個叫做反向 DNS 的東西。那有用嗎?

我注意到Google應用程序 - 我們總是指向 ghs.google.com,他們將請求轉發到適當的 IP。所以它一定是可能的,但我只是不知道如何實現它。

每個站點都需要一個單獨的 cname。就像是:

foot.com CNAME foo.com.service.com
bar.com CNAME bar.com.service.com
hello.com CNAME hello.com.service.com

要為您在 Dreamhost 上擁有的域設置 DNS,請

確保將名稱伺服器設置為 Dreamhost 名稱伺服器(它們應該是預設設置)。然後與他們一起設置 DNS(應該有一個控制面板來設置域的 DNS 記錄)。

一些資訊

CNAME 只是指向主機名;這些主機名必須配置 IP 地址(即,必須有一條 A 記錄將它們指向一個 IP)。

如果您有幾個主機名需要映射到同一個 IP,那麼將一個主機名 (A) 設置為指向該 IP,然後將所有其他主機名 CNAME 設置為該主機名 (A) 會更容易。

如果您有幾個需要指向不同 IP 的主機名,那麼 CNAME 將沒有多大用處。

因此,假設您有 foo.com、bar.com、hello.com 和 service.com,並且您希望將它們全部指向同一個 IP(注意 @ceejayoz 關於根域和 CNAMES 的評論)。您需要設置一條 A 記錄以將主機名(例如 service.com)指向 IP,然後為 www.bar.com、www.foo.com 和 www.hello.com 設置 CNAME 以指向服務網。

這將要求您有權訪問 foo.com、bar.com、hello.com 和 service.com 的 DNS 記錄(因此,如果您已向 Dreamhost 註冊了所有這些域,則需要將它們全部配置為使用 Dreamhost名稱伺服器,然後為每個伺服器設置 DNS 記錄。

對您的問題的具體回答

您已經提到,您希望能夠修改一個域的 IP 地址而不影響另一個域;在這種情況下,您需要為每個域名設置一個 CNAME。或者,您可以使用反向代理(儘管它會增加額外的複雜性)。使用反向代理,您可以讓所有域使用相同的 IP,而不管它們在哪個伺服器上(反向代理將根據請求的域將請求轉發到正確的伺服器)。這可能就是 Google Apps 正在做的事情。

反向 DNS 對此沒有幫助,但很有用(尤其是對於電子郵件傳遞)。我現在不會進入它,但你應該閱讀它!

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