Similar question has been asked in stackoverflow before.
See here: PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?
Also see this article: http://shiflett.org/blog/2006/mar/server-name-versus-http-host
Recommended using HTTP_HOST, and
falling back on SERVER_NAME only if
HTTP_HOST was not set. He said that
SERVER_NAME could be unreliable on the
server for a variety of reasons,
including:
- no DNS support
- misconfigured
- behind load balancing software
Source:
http://discussion.dreamhost.com/thread-4388.html