如何通过 IP 地址访问共享服务器上的网站?

如何通过 IP 地址访问共享服务器上的网站?

我有几个问题,请帮忙:

首先,我只需输入 即可访问 Google 搜索http://74.125.224.211,因为这是 nslookup 返回的 IP 地址。

但是我无法使用 www.yahoo.com 返回的 IP 地址来做到这一点。如何通过 IP 进入 Yahoo 搜索页面?

另一个例子,http://www.allaboutcircuits.com将通过 DNS 服务器解析到68.233.243.63,但如果我转到http://68.233.243.63,我会得到“Hello world!”。

其次,由于某种原因,我的网络托管服务的 DNS 解析器出现了问题(它不会被修复!!). 因此命令如下

get_file_contents("http://www.allaboutcircuits.com");

将返回php_network_getaddresses: getaddrinfo failed: Name or service not known

我该如何利用 IP 地址来解决这个问题?

68.233.243.63

我的意思是,以某种方式将 HTTP 主机名参数附加到get_file_contents()

我希望自己(用我的代码)解决这个问题,服务器管理员不会进行任何故障排除/调整。

答案1

在您的 PHP 脚本中,当您通过 IP 地址访问它时,您还需要Host:在请求中发送一个带有正确域名的标头。

Stack Overflow 上的这个问题解释了如何做到这一点:https://stackoverflow.com/questions/356705/how-to-send-a-header-using-a-http-request-through-a-curl-call

答案2

正如 wallyk 所说,它是虚拟服务器

以 Apache 为例

<VirtualHost *:80>
ServerName example2.com
DocumentRoot C:/www/example2.com
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
DocumentRoot C:/www/example.com
</VirtualHost>

在 c:\www\example.com 中创建一个索引文件,内容为“Hello World! example.com”

在 c:\www\example2.com 中创建一个索引文件,内容为“Hello World! example2.com”

并将 hosts 文件更改为

127.0.0.1 example.com
127.0.0.1 example2.com

然后转到http://example.com 然后去http://example2.com

这就是你可以用一个 IP 地址访问多个网站的方法

所以基本上答案是,不,您将无法从该 IP 获取该网站。

答案3

您说您想手动指定主机名和 IP 地址,而不是依赖您无法控制的 DNS 服务器。查看file_get_contents 文档,我看到那里的评论者通过创建包含所需 Host: 标头的上下文解决了类似的问题。如下所示:

$context = stream_context_create(array('http' => array('header' => 'Host: www.allaboutcircuits.com')));
$data = file_get_contents('http://68.233.243.63/', 0, $context);

当然,请注意,手动指定主机名和 IP 地址的缺点是,如果 IP 地址将来发生变化(例如,如果网站转移到新的托管服务提供商),您的代码可能会停止工作,直到您手动更新 IP 地址。

答案4

其次,由于某种原因,我的网络托管服务的 DNS 解析器出现了问题(无法修复!!)

您可以在客户端使用另一个 DNS 服务器,以防它不是网络主机 - 8.8.8.8 和 8.8.8.6 由 Google 运行,而 4.4.4.2 是常见的备用服务器。名称台可以让你找到最快的。或者,你可以使用某种代理服务(我在 VPS 上运行自己的代理服务,或者使用 Tor,但还有其他选择)。

因为这是 PHP,所以更简单的选择是在另一个系统上运行代码。临时解决方案不可维护。

相关内容