This is one of the most confusing things about hosting a website, you basically have three distinct choices to make when you start a site, you can use the same for all three pieces or you can mix and match
- Registrar. This where you buy your domain. Shop around, but I find Namecheap to be inexpensive, with a great user interface.
- DNS Provider. This handles the actual routing from a text name like `tongfamily.com` to an IP address which is a bunch of digits. And picking one varies from costs money to it's bundled
- Hoster this is where the actual site lives, it stores the HTML files and other stuff.
Well now that I've kind of settled on namecheap as the easiest way to own a domain, I have my actual DNS scattered across a huge range of name servers. I've got a bunch on bluehost which is free and then one in digital ocean and then the rest on AWS for my professional sites. So what's a good way to think about this?
- AWS. Their Route53 works this way, it is $0.50/month for the first 25 hosted zones as they call it, so $6 a year. Then for queries, it is $0.40/million so about $5. That means it is more expensive but more scalable.
DigitalOcean. As long as you have a droplet running, DNS management is free. That's not too bad a limitation, so it Condes out to a minimum of $5/month for everything.
Bluehost. This is similar you get DNS management for free with a hosting plan. If you are smart and get a $80/year plan for everything, then this is pretty good. This is the clunkiest but also the cheapest.
So my recommendation is to use AWS if you are doing something professional and care about scale (and no one was every fired for using AWS :-). If you are going to use a hoster anyway, then I'd recommend Bluehost for the simplest cases and DigitalOcean makes sense for the semipro sites like https://tongfamily.com
Changing these things is a pain because any change to your DNS provider works like this:
Go to your registrar and they have a section called DNS usually and this will tell the internet where to look. For instance, if the DNS provider is Bluehost, then you get addresses like
ns1.bluehost.com. If it is DigitalOcean, you fill in lines like
ns1.digitalocean.com. If it is AWS, then look after you create your Host Zone, you will see it populates NS records and will have four random looking DNS that look like
aws-dns-02.co.ukand the like.
Then go to your DNS Provider and start filling things in. That's a longer section, but A records are real IP addresses for your site. CNAME is an alias and says look up that name and there it is. MX records are for Email and then you normally will need TXT records for various miscellaneous things.
Now look at a DIG tool to see what the DNS is reporting. Google Tools has a nice graphical tool that shows what Google thinks the settings are.