为什么IP在本地环境中显示为:: 1?

时间:2016-10-08 13:16:13

标签: php apache

我正在开发一个PHP应用程序,并使用$_SERVER['REMOTE_ADDR']

将用户的IP地址存储在数据库中

这会在本地环境中返回::1(Apache在macOS Sierra上本地设置)。

我从以前的帖子中了解到,这是因为没有"往返"到我的ISP。但有没有办法测试这个,即确保代码$_SERVER['REMOTE_ADDR']在应用程序部署到实时(非本地)托管环境后返回正确的地址?

我以后的效果是让我的真实"真实"出站IP地址,如我访问http://www.whatsmyip.org/

等网站时所显示的内容

我构建的应用程序还会在用户存储在数据库中后显示该用户的IP地址。所以作为第二个问题,如果我要编写逻辑来过滤掉显示的本地IP,我应该过滤掉::1127.0.0.1,还是还有其他人?

1 个答案:

答案 0 :(得分:0)

::1是您在IPv6中的“家庭”地址,就像127.0.0.1在IPv4中一样

https://en.wikipedia.org/wiki/IPv6_address

  

:: 1/128 - 环回地址是单播本地主机地址。如果主机中的应用程序将数据包发送到此地址,则IPv6堆栈将在相同的虚拟接口上回送这些数据包(对应于IPv4中的127.0.0.1/8)。

获取“真正的”出站地址的问题是您的本地计算机可能不知道它是什么。例如,Amazon Web Services有一个服务器实际存在的控制平面。因此,您的计算机的IP位于该控制平面内,而不是Internet。您可以为其分配外部IP,但机器没有内部方式来查找该IP。您实际上必须perform other actions(特定于AWS)才能获得它。