我已设置 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。
的 DNS 区域文件cdn.dj
(是的,这是在吉布提注册的真实域名)已正确设置:
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 还不太熟悉,但我会非常感激任何建议。
答案1
它与 DNS 无关。您不应该使用 CDN 源服务器。您的所有内容都在您的客户源服务器上。使用 CDN 源服务器,您可以手动(通过 FTP)将内容上传到它。
因此,删除 CDN 源服务器。删除 cdn.dj A 记录(假设您只想将 cdn.dj 用于 cdn)
然后按照以下说明进行操作http://wiki.mediatemple.net/images/EdgeCast_HTTP_Small_Object_Guide_3.03.pdf:
配置我们的边缘服务器以识别您的 CNAME
- 导航到 Edge Cnames 页面,该页面可以在 MCC 的 HTTP Small Object 选项卡上找到。
- 在“新建边缘 Cname”选项中,输入所需 CNAME 记录的名称。CNAME 应以小写字母指定,并且不应包含协议(即 http://)。[例如 js.cdn.dj.-MAW]
- 选择指定的 CNAME 是否指向客户原点或 CDN 原点服务器。[ 在您的情况下是客户来源。-MAW]
- 通过指向选项,选择 CNAME 将指向的源服务器上的根位置。如果您想要指定特定文件夹,则应键入正斜杠 (/),后跟所需文件夹的路径。[例如:http://donaldjenkins.info/js适用于 js.cdn.dj.-MAW ]
- 单击“添加”。
- 确保已在 DNS 服务器上注册指向同一域的 CNAME 记录。此 CNAME 记录必须与分配给边缘 CNAME 的名称匹配。[您已经完成此操作。-MAW]
然后会发生以下情况:
- 网络浏览器发出请求http://js.cdn.dj/combined.js
- CNAME 将请求发送至 wac.62E0.edgecastcdn.net。
- wac.62E0.edgecastcdn.net 查看 HTTP 主机标头并看到 js.cdn.dj。
- wac.62E0.edgecastcdn.net 查看其配置,并找到一个带有客户源服务器的 js.cdn.dj 的屏蔽 URLhttp://donaldjenkins.info/js
- wac.62E0.edgecastcdn.net 表现得好像刚刚收到了 URL 请求http://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info/js/combined.js。
- combined.js 由缓存提供或从以下位置检索http://donaldjenkins.info:80/js/combined.js然后上菜。
答案2
这是因为您没有正确配置 DNS。
看来您已启用 DNS 通配符,因此 anything.donaldjenkins.info 将是 的 A 记录205.186.157.162
。
您的 css、js、images 子域名似乎也指向这个 IP 而不是 CNAMES;这让我相信您错误地配置了这些。
要配置images
子域名你应该有类似的东西:
images.cdn 43200 IN CNAME wac.62E0.edgecastcdn.net.
我真的希望您说这*.cdn.dj
是缩短 donaldjenkins.info 的一种方式,因为cdn.dj
它不是您可以使用的真实域名。