为什么我的服务器和远程ip显示相同


Why my server and remote ip showing same?

我刚刚注意到我的所有用户都有相同的ip。直到昨天它还运行得很好。

我使用下面的代码来获取用户ip及其返回的服务器ip 65.254.32.34:

<?php
function getrealip() {
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
        {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}       
?>

我现在正在用这个code做测试,它在两个ip上都显示相同。

<?php
echo 'Server IP: ' . $_SERVER['SERVER_ADDR'] . '<br />';
echo 'Your IP: ' . $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
   echo '<br />Forwarded For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
}
?>

输出为:

Server IP: 65.254.32.34
Your IP: 65.254.32.34

我的ip在哪里:115.240.13.83

我用我的第二个代码做了一页:http://ffsplus2.com/myip.php

看起来你的nginx服务器设置不正确。看看这篇文章。

如果您的服务器位于同一台机器上的代理之后,并且该代理没有将remote_addr设置为客户端ip,则可能会发生这种情况。remote_addr记录向该服务器发送请求的ip。

Client -> Proxy -> Server

与上面的模型一样,对于Proxy,远程ip地址是Client ip,对于Server,如果代理设置不正确,则远程ip地址为Proxy ip。