I have a DirectAdmin setup with Apache on a server which is behind NAT.
Everything is working correctly when accessing a VirtualHost from outside the machine (either through the Internet and the Intranet) but I'm having problems when accessing the very same VirtualHost from the localhost (i.e. by using curl mywebsite.com inside the server).
Relevant network devices:
eth0 : IP Address inside the NAT eth0:0 : IP Address outside the NAT (i.e. public IP Address) eth1 : LAN IP Address lo : Loopback
Below is the relevant httpd configuration:
Listen 80 NameVirtualHost *:80 DocumentRoot "/var/www/html" <VirtualHost *:80> ServerName mydomain.com ... </VirtualHost>
When using a wildcarded
NameVirtualHostone would expect a request with the
Host: mydomain.com directive set in the request header (which
curl does) to be served by the
VirtualHost directive. Although, when I
curl mydomain.com from inside the server, Apache fallback to the
DocumentRoot not allowing me to access the
The only way I got it to work was to edit
/etc/hosts and define the IP inside the NAT for
Another piece of information that may be useful:
<?php print_r($_SERVER); ?> on a test page both from inside and outside the server to check the values for
SERVER_IP and when I
curl from a remote machine I get the IP address inside the NAT, but when I
curl from inside the server I get the public IP address.
The domain resolves to the very same IP address on both ends (inside and outside the server).