从本地主机访问 Apache VirtualHost

从本地主机访问 Apache VirtualHost

我在 NAT 后面的服务器上使用 Apache 设置了 DirectAdmin。

从机器外部访问 VirtualHost 时(通过 Internet 和 Intranet),一切都正常工作,但是从本地主机访问同一个 VirtualHost 时遇到问题(即通过在服务器内部使用 curl mywebsite.com)。

相关网络设备:

eth0   : IP Address inside the NAT
eth0:0 : IP Address outside the NAT (i.e. public IP Address)
eth1   : LAN IP Address
lo     : Loopback

以下是相关的httpd配置:

Listen 80
NameVirtualHost *:80

DocumentRoot "/var/www/html"

<VirtualHost *:80>
  ServerName mydomain.com
  ...
</VirtualHost>

使用通配符时,人们会期望在请求标头中设置指令NameVirtualHost的请求(确实如此)由该指令提供服务。但是,当我从服务器内部访问时,Apache 会回退到不允许我访问主机。Host: mydomain.comcurlVirtualHostcurl mydomain.comDocumentRootVirualHost

我让它工作的唯一方法是编辑/etc/hosts和定义 NAT 内的 IP mydomain.com

另一条可能有用的信息:

<?php print_r($_SERVER); ?>在服务器内部和外部运行了一个测试页面来检查值,SERVER_IP当我curl从远程机器获取 NAT 内的 IP 地址时,但是当我curl从服务器内部获取时,我获取公共 IP 地址。

域名在两端(服务器内部和外部)解析为完全相同的 IP 地址。

此致。

答案1

您可以使用http://xip.io使用您的计算机的 IP 地址为您的虚拟主机定义一个临时域。

簡單又容易 ;)

答案2

你可能想看看我这篇文章是否相关

从 NAT 后面的本地主机到达 Apache 反向代理虚拟主机

相关内容