Domain-Name-System

我們可以為 docs.mysite.com/xyz 之類的東西創建一個 CNAME 別名嗎

  • March 10, 2015

我們維護來自以下 3 個來源的文件的連結。

1. docs.abc.com
2. docs.def.com
3. docs.ghi.com

但我們不會直接向使用者提供連結。所以我們給出了文件的連結,如下所示。

docs.mysite.com/abc/other-link-info

docs.mysite.com/def/other-link-info

docs.mysite.com/ghi/other-link-info

因此,當使用者的瀏覽器嘗試訪問該連結時,瀏覽器會訪問我們的站點 docs.mysite.com,我們有兩種方法來提供文件。

方法一: 對於每個連結,我們將計算文件的實際連結(源連結)並從源連結下載文件。然後,我們會將文件流式傳輸給使用者。

這種方法的缺點是伺服器上存在負載和頻寬使用。

方法 2: 創建 3 個 CNAME 別名,如下所示,以便自動提供文件。

docs.mysite.com/abc => docs.abc.com
docs.mysite.com/def => docs.def.com
docs.mysite.com/ghi => docs.ghi.com

優點是伺服器上沒有負載和頻寬使用。但我不確定這種方法是否可行。

一個側面問題: 如果我們創建一個像 docs.xyz.com 這樣指向 mybucket.s3.amazonaws.com 的 CNAME 別名,最終使用者是否會知道源連結或我們儲存文件的位置。我們不希望最終使用者知道我們將文件儲存在哪裡,而且很多時候這些文件不是我們的。

另一個問題: 如果我們有一個像 docs.xyz.com 這樣的 CNAME 別名指向 mybucket.s3.amazonaws.com,我們可以 MX 記錄和 xyz.com 域上的其他記錄嗎?

非常感謝您花時間閱讀本文。

如前所述,這無法通過 DNS 設置來實現。

但是您的方法 #1 可以通過使docs.mysite.com伺服器記憶體它從源伺服器檢索的文件並從其自己的儲存中提供這些記憶體的文件來改進。

nginx您可以使用它來proxy_cache建立來自原始伺服器的代理內容的記憶體。

不,這行不通。DNS 與協議無關。您可以設置一個網路伺服器來獲取這些內容,並重定向到您希望將使用者發送到的連結。

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