Cdn
CDN CNAME 未解析到客戶來源
我已經設置了一個 Edgecast CDN 來鏡像我所有的靜態內容。因為我使用域的根 (
donaldjenkins.com
) 來託管我的主站點——使用設置 cookie 的 Google Analytics——我將相應的靜態文件儲存在一個單獨的無cookie域 (donaldjenkins.info
) 中,該域僅用於此目的。我已經設置了它(使用本指南作為一般指導),具有以下結構,基於客戶來源和 CDN 來源的組合,以充分利用所選短域名並提供有意義的 URL:
http://donaldjenkins.info:80
設置為儲存在 CDN 目錄中的內容的客戶來源http://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info
;- 然後,我為每個相應的靜態內容類型設置了一個單獨域的各種子域,命名方便
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
- 導航到 Edge Cnames 頁面,該頁面可在 MCC 的 HTTP 小對象選項卡上找到。
- 在 New Edge Cname 選項中,鍵入所需 CNAME 記錄的名稱。CNAME 應以小寫字母指定,並且不應包含協議(即 http://)。$$ For example js.cdn.dj. -MAW $$
- 選擇指定的 CNAME 是指向客戶源還是 CDN 源伺服器。$$ In your case customer origin. -MAW $$
- 通過 Points to 選項,選擇 CNAME 將指向的源伺服器上的根位置。如果您想指明特定文件夾,則應鍵入正斜杠 (/),後跟所需文件夾的路徑。[例如:http: //donaldjenkins.info/js用於 js.cdn.dj。-MAW]
- 點擊添加。
- 確保指向同一域的 CNAME 記錄已在您的 DNS 伺服器上註冊。此 CNAME 記錄必須與分配給您的邊緣 CNAME 的名稱相匹配。$$ You’ve already done this. -MAW $$
然後這就是發生的事情:
- Web 瀏覽器請求http://js.cdn.dj/combined.js
- CNAME 將請求發送到 wac.62E0.edgecastcdn.net。
- wac.62E0.edgecastcdn.net 查看 HTTP 主機標頭並看到 js.cdn.dj。
- wac.62E0.edgecastcdn.net 瀏覽其配置並找到帶有客戶源伺服器http://donaldjenkins.info/js的 js.cdn.dj 的屏蔽 URL
- wac.62E0.edgecastcdn.net 的行為就像它剛剛收到對 URL http://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info/js/combined.js的請求一樣。
- combine.js 從記憶體中提供或從http://donaldjenkins.info:80/js/combined.js檢索,然後提供。