How to host multiple domains and subdomains on single AWS EC2 instance

Ok, so after about 2 hours of reading up various sites and tinkering, I am all set. Here is how to do this.

Basically, you should not have more than 1 hosted zone (HZ) per domain name, otherwise things are really going to be bad. If you have more than 1 HZ for a domain name, please delete the one that was created for the subdomain.

Each HZ will have 4 records -

Following two records are created by default. Do not edit/delete them.
NS - This is the name server record. If AWS Route53 is not your registrar, use ns-servernumber.awsdns-number.com. and other three (4 total) records to change name servers for your registrar.
SOA - Let this record be. DO NOT TOUCH THIS.

Create following two Record Set (blue button).
A - Leave Name blank. Select A-IPv4 address for Type. In Value enter the IP address for your Elastic Load Balancer or EC2 instance.
CNAME - Add * (asterisks/wildcard) in the name field. Select CNAME from the drop down for Type In Value enter the domain name.

Now create the http.conf file and structure virtual hosts like I have in the question.

Things should work now :)


You can follow the tutorial on this link: http://brianshim.com/webtricks/host-multiple-sites-amazon-ec2/

A common error, according to the link, is:

Did it work? If not, here is one possible cause. There might be another configuration file interfering with this one. Check for another .conf file in /etc/httpd/conf.d. Often your primary httpd.conf will include another .conf file in this directory. Make sure it doesn’t have some Virtual Host settings which are interfering with yours.

After you set the configurations, you should run:

sudo service httpd restart