Under Linux, the /etc/hosts
file can be used to override DNS definitions, i.e. to point a hostname to a different IP.
I need to test a new VPS. So I added a line in the /etc/hosts file:
123.123.123.123 www.mywebsite.com
I flushed all caches and went to www.mywebsite.com , but it still shows the old site. In the new site, I should see the default apache file "It Works!"
I used ping to test the ip and it shows the new ip.
I used wget to retrieve the index.html file, but it retrieves the file from the old server.
I use DNS Flusher Firefox add on to clear DNS cache. I also check using Midori browser private browsing (it doesn't cache DNSs).
For testing purposes, I added a line for facebook:
123.123.123.123 www.facebook.com
I works fine, i.e. I see a "connection timed out" message, after a redirection from http://
to https://
I added another line:
123.123.123.123 stackoverflow.com
This time, I see the normal stackoverflow website.
If I add:
127.0.0.1 www.mywebsite.com
I see a not found message from local server.
I checked using Windows and saw the same behaviour.
Why can't I point a hostname to a new IP?
Thanks for your help!
Edit: I bypassed my router to check if it¡s something related with it, but it isn't.
nscd
running on your computer? ⫽ @Flimm: Which doesn't make much sense, since the entire question is about overriding DNS.host
does not use the generic name lookup functions that wget or a browser would.host
.ping example.com
andgetent hosts example.com
on the command-line.nscd
installed.ping mywebsite.com
gives me the new IP.wget mywebsite.com
shows me the old website.