DNS CNAME records visibility on a web server

AnthonyWalker
AnthonyWalker used Ask the Experts™
on
Have a question about DNS CNAME records and what web servers see. (unfortunately I don't have an environment where I can just test this)

if I have the following domain names:

domain1.com
domain2.com
www.domain1.com
www.domain2.com

I can create them all as A records pointing directly to the IP address and the web server sees whatever the user types in the browser and everything works as planned.

But to simplify life I'd like to create one of these as the "primary" domain name as an A record and the others as an "alias" domain name with a CNAME record.
So if domain1.com is an A record and domain2.com is a CNAME to domain1.com what does the web server see what the user types in domain2.com ?
Does it see domain2.com or domain1.com ?

Does it depend on the type of web server?
Or does DNS just work it's magic in resolving the domain names to an IP and the web server doesn't know anything about it?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Principal Software Engineer
Commented:
I believe your question contains its own answer:  "... the web server sees whatever the user types in the browser."

The HTTP request structure is independent of how the IP address is resolved.  The HOST field is generated by the browser and sent as part of the GET structure.

GET /docs/index.html HTTP/1.1
Host: www.nowhere123.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
(blank line)

Open in new window


This HTTP request can be sent to any web server, regardless of whether the host is actually "www.nowhere123.com".

When the browser user enters "www.something.com", it considers whatever its own system's DNS resolver returns to be correct.  It then goes ahead and constructs the GET request with "www.something.com" and sends it off to the IP address returned by the resolver.  What the web server gets is what the browser stuck into the HOST field.

If a complicated DNS resolution across multiple names causes problems for the server then it can be instructed to accept aliases, e.g. Apache:

# ServerName: The primary name for this virtual host
# ServerAlias: Other acceptable names for this virtual host
# UseCanonicalName:  Use ServerName to build URLs referring to itself
#
ServerName www.myservername.com
ServerAlias myservername.* www.myservername.* server2.* www.myserver2.*
UseCanonicalName on

Open in new window

Thanks, that's what I hoped would be happening.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial