CDN CNAME 未解析至客户来源

CDN CNAME 未解析至客户来源

我已设置 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.djCDN 来源每种相应静态内容类型的边缘 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

  1. 导航到 Edge Cnames 页面,该页面可以在 MCC 的 HTTP Small Object 选项卡上找到。
  2. 在“新建边缘 Cname”选项中,输入所需 CNAME 记录的名称。CNAME 应以小写字母指定,并且不应包含协议(即 http://)。[例如 js.cdn.dj.-MAW]
  3. 选择指定的 CNAME 是否指向客户原点或 CDN 原点服务器。[ 在您的情况下是客户来源。-MAW]
  4. 通过指向选项,选择 CNAME 将指向的源服务器上的根位置。如果您想要指定特定文件夹,则应键入正斜杠 (/),后跟所需文件夹的路径。[例如:http://donaldjenkins.info/js适用于 js.cdn.dj.-MAW ]
  5. 单击“添加”。
  6. 确保已在 DNS 服务器上注册指向同一域的 CNAME 记录。此 CNAME 记录必须与分配给边缘 CNAME 的名称匹配。[您已经完成此操作。-MAW]

然后会发生以下情况:

  1. 网络浏览器发出请求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 查看其配置,并找到一个带有客户源服务器的 js.cdn.dj 的屏蔽 URLhttp://donaldjenkins.info/js
  5. wac.62E0.edgecastcdn.net 表现得好像刚刚收到了 URL 请求http://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info/js/combined.js
  6. 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它不是您可以使用的真实域名。

相关内容