Recently, I had a hard time configuring my domain on appfog. There were two seperate problems along the way.
One was properly setting up the a record along with the cname and the other was redirecting naked urls to www urls.
This is how I did it.
Set up appfog
Setting up appfog is a piece of cake. Just dowload their ‘af’ gem and login into appfog. From there, push and update your app in the desired infrastructure.
Set up your domain
For this post, I will be using the www domain name. It doesn’t matter whether your domain starts with www or non-www(usually called a canonical domain) so just decide beforehand which type of domain do you prefer.
Unlike other hosting providers, appfog doesn’t provide a dns server. So you need to set up an A record and a CNAME record with your domain provider.
For the A record, add the domain in appfog’s console. Like this :
See the second domain? That’s mine. The third one is min too but I will explain it later on. You will be provided a default domain which is the first one in the screenshot. Add your domain and click on update.
Now see the two ip addresses next to the A record on the screenie? You need to add those as two different A records on your domain provider’s console(or whatever it is called)
Next, add the CNAME record. The C in CNAME stands for canonical btw.
I bought my domain from bigrock which is pretty nifty. My settings page looks like this :
Remember to NOT add the www when adding the A record. Now when adding the CNAME record, add the url next to the CNAME record in the appfog console as your CNAME value and add the www version of your url in CNAME. One last thing. I added the third domain because I couldn’t redirect from my domain provider’s console. So I set up the non-www url and redirected all the non-www traffic to the www-domain from my app itself.
Done? Dns propogation for A and CNAME records usually take between 1-4 hours so go outside and chill out.
Now your www-yourdomain-com will be working. That’s fine but when you type yourdomain-com without the www, it won’t work. That’s because you need to add a 301(it means permanent) redirect from your .yourdomain-com to www-yourdomain-com There are a couple of ways to do this.
Your domain provider has a facility to redirect domains. Simply set the redirect from your domain provider’s console.
If you are using apache, checkout the online guides on how to add redirects in .htaccess
Or if you are like me and hack around in nodejs, add this snippet of code before all your other routes.
app.get('*', function(req, res, next) {
if (req.headers.host.slice(0, 3) != 'www') {
res.redirect('http://www.' + req.headers.host + req.url, 301);
} else {
next();
}
});
This code snippet is meant for expressjs but it can work on standard nodejs http as well. The best part about this snippet is that it will redirect all paths to the correct domain.
That’s all for now folks. Setting up domains on appfog can be a bit of a pain but I hope this post helps.