我在Apache后面的一个服务器上安装了一个DirectAdmin安装程序。
从机器外部(通过Internet和Intranet)访问VirtualHost时,一切正常,但从本地访问相同的VirtualHost(即通过在服务器内使用curl mywebsite.com)时遇到问题。
相关的networking设备:
eth0 : IP Address inside the NAT eth0:0 : IP Address outside the NAT (ie public IP Address) eth1 : LAN IP Address lo : Loopback
下面是相关的httpdconfiguration:
Listen 80 NameVirtualHost *:80 DocumentRoot "/var/www/html" <VirtualHost *:80> ServerName mydomain.com ... </VirtualHost>
当使用通配符的NameVirtualHost可以期待一个请求,在请求头中设置Host: mydomain.com指令(这个curl会)由VirtualHost指令提供服务。 虽然,当我从服务器内部curl mydomain.com时,Apache回VirualHost DocumentRoot不允许我访问VirualHost主机。
我得到它的唯一方法是编辑/etc/hosts并为mydomain.com定义NAT内部的IP。
另一个可能有用的信息:
我跑了<?php print_r($_SERVER); ?> <?php print_r($_SERVER); ?>在服务器内部和外部的testing页上检查SERVER_IP的值,当我从远程计算机上curl ,我得到NAT中的IP地址,但是当我从服务器内部curl ,我得到公共IP地址。
域名parsing到两端(服务器内部和外部)完全相同的IP地址。
最好的祝福。
您可以使用http://xip.io为您的虚拟主机使用您计算机的IP地址定义一个临时域。
简单而简单;)