2012-10-05 790 views
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?請注意,我們擁有的IP地址範圍是.90-.94

+0

所以,你得到一個遠程計算機的IP地址,你想知道爲什麼它是從當前機器的地址不同? –

+2

「服務器A」是多宿主的,即有多個網卡? –

+0

也許「A」通過.90機器代理? –

回答

1

由於它是VPS,因此您可能在server_b上看到的是server_a所運行的VPS的主機IP地址。

要麼是這樣,要麼還有其他一些代理機制在進行。

可能有解決的辦法:

上SERVER_B做$_SERVERprint_r()

根據所涉及的各種服務器的配置,除了REMOTE_ADDR之外,您還可能會得到類似$_SERVER['HTTP_FORWARDED']的值。這將是由代理傳遞的原始計算機的IP地址,應該是您期望的那個。

這個問題還可以幫助您:What is the most accurate way to retrieve a user's correct IP address in PHP?

相關問題