【发布时间】:2018-04-15 15:44:22
【问题描述】:
最近我在google云容器集群中部署了一个网站,我相信实际的网站源代码是在集群自动创建的计算机引擎实例中运行的。
在网站中,我想记录访问者的访问信息,包括公共 IP 地址,例如80.87.131.131。但是我发现我只能获取内部IP地址,比如10.128.0.3
这是我用来获取访问者IP的PHP函数。
function get_ip()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = $_SERVER['REMOTE_ADDR'];
if(filter_var($client, FILTER_VALIDATE_IP))
{
$ip = $client;
}
elseif(filter_var($forward, FILTER_VALIDATE_IP))
{
$ip = $forward;
}
else
{
$ip = $remote;
}
return $ip;
}
有没有办法获取访问者的公网IP?我需要进行一些服务器端配置吗?任何帮助将不胜感激。并提前非常感谢。
【问题讨论】:
-
那么,它对你有用吗?
-
通常上面的函数是有效的,但是在谷歌云(kubernetes)集群的pod中,这个函数只返回内部IP,比如10.100.xxx.xxx。我认为 Google Cloud 可能对集群 pod 有一些特殊的配置。我没有时间做更多的研究,我已经切换到 JS 来完成这个功能。有关详细信息,请参阅我对第一个答案的评论。
标签: php google-app-engine google-cloud-platform clientip