Cdn

CDN CNAME 未解析到客戶來源

  • March 3, 2012

我已經設置了一個 Edgecast CDN 來鏡像我所有的靜態內容。因為我使用域的根 ( donaldjenkins.com) 來託管我的主站點——使用設置 cookie 的 Google Analytics——我將相應的靜態文件儲存在一個單獨的無cookie域 ( donaldjenkins.info) 中,該域僅用於此目的。我已經設置了它(使用本指南作為一般指導),具有以下結構,基於客戶來源和 CDN 來源的組合,以充分利用所選短域名並提供有意義的 URL:

  1. http://donaldjenkins.info:80設置為儲存在 CDN 目錄中的內容的客戶來源http://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info
  2. 然後,我為每個相應的靜態內容類型設置了一個單獨域的各種子域,命名方便cdn.dj,作為CDN 源邊緣 CNAME:
  • js.cdn.dj指向原始目錄http://wac.62E0.edgecastcdn.net/0062E0/donaldjenkins.info/js
  • css.cdn.dj指向原始目錄http://wac.62E0.edgecastcdn.net/0062E0/donaldjenkins.info/css
  • images.cdn.dj指向原始目錄http://wac.62E0.edgecastcdn.net/0062E0/donaldjenkins.info/images

等等。這會產生一些非常漂亮、簡短、清晰的 URL。

cdn.dj(是的,它是在吉布提註冊的真實域名)的 DNS 區域文件設置正確:

cdn.dj          43200   IN   A       205.186.157.162     
css.cdn.dj      43200   IN   CNAME   wac.62E0.edgecastcdn.net.
images.cdn.dj   43200   IN   CNAME   wac.62E0.edgecastcdn.net.
js.cdn.dj       43200   IN   CNAME   wac.62E0.edgecastcdn.net.

DNS 解析為 Edgecast URL:

$ host js.cdn.dj
js.cdn.dj is an alias for wac.62E0.edgecastcdn.net.
wac.62E0.edgecastcdn.net is an alias for gs1.wac.edgecastcdn.net.
gs1.wac.edgecastcdn.net has address 93.184.220.20

但是每當我嘗試在 CNAME 資產映射到的任何目錄中獲取文件時,我都會得到 404:

$ curl http://js.cdn.dj/combined.js
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
       <title>404 - Not Found</title>
   </head>
   <body>
       <h1>404 - Not Found</h1>
   </body>
</html>

儘管存在相應的客戶原始文件:

$ curl http://donaldjenkins.info/js/combined.js

獲取combined.js文件的內容。然而,自從我建立 CDN 以來,DNS 傳播的時間已經綽綽有餘了。

在上述設置中顯然存在一些明顯的錯誤,而且我對 CDN 有點陌生——但任何建議都將不勝感激。

它與DNS沒有任何關係。您不應該使用 CDN 源伺服器。您的所有內容都在您的客戶源伺服器上。使用 CDN 源伺服器,您可以手動(通過 FTP)向其上傳內容。

所以,刪除 CDN 源伺服器。刪除cdn.dj的一條記錄(假設你只想用cdn.dj換cdn)

然後按照http://wiki.mediatemple.net/images/EdgeCast_HTTP_Small_Object_Guide_3.03.pdf中的這些說明進行操作:

配置我們的邊緣伺服器以辨識您的 CNAME

  1. 導航到 Edge Cnames 頁面,該頁面可在 MCC 的 HTTP 小對象選項卡上找到。
  2. 在 New Edge Cname 選項中,鍵入所需 CNAME 記錄的名稱。CNAME 應以小寫字母指定,並且不應包含協議(即 http://)。$$ For example js.cdn.dj. -MAW $$
  3. 選擇指定的 CNAME 是指向客戶源還是 CDN 源伺服器。$$ In your case customer origin. -MAW $$
  4. 通過 Points to 選項,選擇 CNAME 將指向的源伺服器上的根位置。如果您想指明特定文件夾,則應鍵入正斜杠 (/),後跟所需文件夾的路徑。[例如:http: //donaldjenkins.info/js用於 js.cdn.dj。-MAW]
  5. 點擊添加。
  6. 確保指向同一域的 CNAME 記錄已在您的 DNS 伺服器上註冊。此 CNAME 記錄必須與分配給您的邊緣 CNAME 的名稱相匹配。$$ You’ve already done this. -MAW $$

然後這就是發生的事情:

  1. Web 瀏覽器請求http://js.cdn.dj/combined.js
  2. CNAME 將請求發送到 wac.62E0.edgecastcdn.net。
  3. wac.62E0.edgecastcdn.net 查看 HTTP 主機標頭並看到 js.cdn.dj。
  4. wac.62E0.edgecastcdn.net 瀏覽其配置並找到帶有客戶源伺服器http://donaldjenkins.info/js的 js.cdn.dj 的屏蔽 URL
  5. wac.62E0.edgecastcdn.net 的行為就像它剛剛收到對 URL http://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info/js/combined.js的請求一樣。
  6. combine.js 從記憶體中提供或從http://donaldjenkins.info:80/js/combined.js檢索,然後提供。

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