0

使用此代码:

在服务器 AI 上有这个:

$handle = fopen('http://www.server_b.com/get_ip.php', 'r'); //This is just a PHP file that echoes the REMOTE_ADDR
echo "IP looks like ".fread($handle, '100000')." to external server.\n";
fclose($handle);
echo "IP looks like ".$_SERVER['SERVER_ADDR']." to this server.";

在服务器 BI 上有这个:

echo $_SERVER['REMOTE_ADDR'];

我从服务器 A 得到以下输出:

IP looks like xxx.xxx.223.90 to external server. //xxx.xxx on both lines are the same
IP looks like xxx.xxx.223.94 to this server.

为什么我得到两个不同的 IP?请注意,我们确实拥有 .90-.94 的 IP 范围

4

1 回答 1

1

由于它是 VPS,您可能在 server_b 上看到的是运行 server_a 的 VPS 主机的 IP 地址。

要么就是这样,要么还有其他一些代理机制正在运行。

可能有办法解决这个问题:

在 server_b 上做一个print_r()$_SERVER

根据所涉及的各种服务器的配置,除此之外,REMOTE_ADDR您还可能获得类似$_SERVER['HTTP_FORWARDED']. 这将是代理传递的原始计算机的 IP 地址,并且应该是您所期望的。

这个问题可能会进一步帮助您:在 PHP 中检索用户正确 IP 地址的最准确方法是什么?

于 2012-10-05T15:31:39.697 回答