Most cloud services require you to create a CNAME record for your custom domain in order to direct traffic to the cloud-hosted site. Your example.com
site may actually be hosted at example.cloudapp.net
. For on-premises hosting you would know the IP address of your server (or the load balancer) and can use an A record, but that is not the case on Azure or AWS: these require that pesky CNAME.
CNAME records don’t support naked domains. Your site has to be at www.example.com, it can’t be at simply example.com, the root, or apex, record of your domain. On the other hand, A records can only support IP addresses.
There are a number of solutions to this problem, so I’ll list some here: