I have set up an Edgecast CDN to mirror all my static content. Because I use the root of my domain (donaldjenkins.com
) to host my main site—using Google Analytics which sets cookies—I've stored the corresponding static files in a separate cookieless domain (donaldjenkins.info
) which is used only for this purpose. I've set it up (using this guide for general guidance), with the following structure, based on a combination of customer origin and CDN origin to make the most of the chosen short domain name and provide meaningful URLs:
http://donaldjenkins.info:80
is set as the customer origin for the content stored in the CDN at directoryhttp://wac.62E0.edgecastcdn.net/8062E0/donaldjenkins.info
;I've then set up various subdomains of a separate domain, the conveniently-named
cdn.dj
, as CDN-origin Edge CNAMEs for each of the corresponding static content types:js.cdn.dj
points to the origin directoryhttp://wac.62E0.edgecastcdn.net/0062E0/donaldjenkins.info/js
;css.cdn.dj
points to the origin directoryhttp://wac.62E0.edgecastcdn.net/0062E0/donaldjenkins.info/css
;images.cdn.dj
points to the origin directoryhttp://wac.62E0.edgecastcdn.net/0062E0/donaldjenkins.info/images
and so on. This results in some pretty nice, short, clear URLs.
The DNS zone file for cdn.dj
(yes, it's a real domain name registered in Djibouti) is set properly:
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.
The DNS resolves to the 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
But whenever I try to fetch a file in any of the directories to which the CNAME assets map, I get a 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>
despite the fact that the corresponding customer origin file exists:
$ curl http://donaldjenkins.info/js/combined.js
fetches the content of the combined.js
file. Yet it's been more than enough time for the DNS to propagate since I set up the CDN.
There's obviously some glaring mistake in the above-described setup, and I'm a bit of a novice with CDNs—but any suggestions would be gratefully received.
It doesn't have anything to do with DNS. You shouldn't be using CDN origin servers. All your content is on your customer origin server. With CDN origin servers you manually (via FTP) upload content to it.
So, delete the CDN origin servers. Delete the cdn.dj A record (assuming you just want to use cdn.dj for cdn)
Then follow these instructions from http://wiki.mediatemple.net/images/EdgeCast_HTTP_Small_Object_Guide_3.03.pdf:
To configure our edge servers to recognize your CNAME
Then this is what happens:
This is because you haven't configured your DNS correctly.
It seems you have DNS wildcard enabled, so that anything.donaldjenkins.info will be an A record to
205.186.157.162
.Your css, js, images subdomains also seem to point to this IP instead of being CNAMES; This leads me to believe you have incorrectly configured these.
To configure the
images
subdomains you should have something like:images.cdn 43200 IN CNAME wac.62E0.edgecastcdn.net.
I really hope you say
*.cdn.dj
as a way to shorten donaldjenkins.info, ascdn.dj
is not a real domain you can use.