使用此代码:
在服务器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.";
服务器B上的我有:
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范围答案 0 :(得分:1)
由于它是VPS,您在server_b上可能看到的是运行server_a的VPS主机的IP地址。
或者,或者还有一些其他的代理机制正在进行中。
可能有办法解决这个问题:
在server_b上执行print_r()
$_SERVER
。
根据所涉及的各种服务器的配置,除了REMOTE_ADDR
之外,您还可以获得类似$_SERVER['HTTP_FORWARDED']
的值。这将是代理传递的原始机器的IP地址,应该是您期望的那个。
这个问题可能会对您有所帮助:What is the most accurate way to retrieve a user's correct IP address in PHP?