为什么$ _SERVER [“ REMOTE_ADDR”]显示的IP与我的外部IP不同? [重复]

问题描述

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

如果您的计算机与服务器位于同一网络上,并且位于具有NAT的路由器之后,那么您可能会看到自己的私有IP     ,首先,让我澄清一些事情。 当您在localhost上时,不使用ISP来获取网页,因此您将对ipv6使用内部IP
127.0.0.1
::1
。 如果您是通过某种路由器从本地网络上获取页面的,则该路由器将分配一个IP,例如
192.168.1.90
。 如果您的站点托管在网络外部,则您要求ISP为您获取站点,这意味着您可以使用whatsmyip指定的IP。 如果您使用的是DNS服务器(例如Opendns),则要求您的ISP要求Opendns为您获取站点,并且由于明显的原因,开放dns使用一组与您的IP不同的ip \。 可能存在某种可能会干扰代理的代理,因此您应该为此做一个对策,如果需要任何直接连接以及出于其他一些原因,标准代理站点应将客户端IP转发到服务器上。 话虽这么说,您通常可以在检查
REMOTE_ADDR
之前通过检查其他几个参数来找到IP,这是我为我的一个项目创建的类,但是您可以随心所欲: https://github.com/AdminSpot/ASDDL/blob/master/system/classes/http/request.php
foreach (array(\'HTTP_CLIENT_IP\',\'HTTP_X_FORWARDED_FOR\',\'HTTP_X_FORWARDED\',\'HTTP_X_CLUSTER_CLIENT_IP\',\'HTTP_FORWARDED_FOR\',\'HTTP_FORWARDED\',\'REMOTE_ADDR\') as $key)
{
    if (array_key_exists($key,$_SERVER) === true)
    {
        foreach (explode(\',\',$_SERVER[$key]) as $ip)
        {
            if (filter_var($ip,FILTER_VALIDATE_IP) !== false)
            {
                $this->ip = $ip;
                break;
            }
        }
    }
}
如您所见,数组的顺序非常重要: HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_X_FORWARDED HTTP_X_CLUSTER_CLIENT_IP HTTP_FORWARDED_FOR HTTP_FORWARDED REMOTE_ADDR 注意
REMOTE_ADDR
倒数第二个,这是因为这是不得已的方法,并且大多数时候是不正确的。     ,当您的Web服务器位于本地计算机上时,它将为您提供本地IP地址(大多数为127.0.0.1),这是因为您不是从外部访问它。那是原因。     ,什么是IP? 我唯一的困难是您可能会落后于代理人。可以吗     ,如果您的服务器是Apache,并且在Apache之前使用了一些前端,则可以尝试使用mod_rpaf: 在Debian中:
aptitude install libapache2-mod-rpaf
然后编辑配置:
nano /etc/apache2/mods-enabled/rpaf.conf
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
</IfModule>
    ,可能是因为您是从本地主机访问的?您看到的IP是127.0.0.1,还是本地IP(192.168.x.x)?     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...