Php 为什么fopen()给我的IP与$#u SERVER[';SERVER\u ADDR';]不同?

Php 为什么fopen()给我的IP与$#u SERVER[';SERVER\u ADDR';]不同?,php,ip,ip-address,fopen,Php,Ip,Ip Address,Fopen,使用此代码: 在服务器A上,我有: $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 ".$_SERV

使用此代码:

在服务器A上,我有:

$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.";
echo $_SERVER['REMOTE_ADDR'];
在服务器B上,我有:

$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.";
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?注意,我们拥有的IP范围为.90到.94,因为它是一个VPS,您可能在服务器_b上看到的是服务器_a运行的VPS主机的IP地址

要么是这样,要么就是有其他代理机制在进行

也许有一种方法可以解决这个问题:

在服务器b上对
$\u服务器
执行
打印()

根据所涉及的各种服务器的配置,除了
REMOTE\u ADDR
之外,您还可以获得类似
$\u SERVER['HTTP\u FORWARDED']
的值。这将是代理传递的原始计算机的IP地址,应该是您期望的IP地址


这个问题可能会进一步帮助你:

那么,你得到的是远程机器的IP地址,你想知道为什么它与当前机器的地址不同?服务器a是多主机的,即有多个网卡吗?也许“a”通过.90机器代理?@IgnacioVazquez Abrams不,这根本不是我在做的。