获取OpenShift访客的真实IP

OpenShift-Logo

OpenShift通过转发服务器来分发数据,如果应用程序通过读取SERVER变量的REMOTE_ADDR,那么读取的IP地址将会是OpenShift转发服务器的地址:

[forward server IP

访客统计软件也悲剧地只记录了这个地址:

OpenShift Forward Server IP

用户的真实IP其实存在SERVER变量的另一个键:

real client IP

因此,在不更改应用程序的前提下,如果要获取访客的真实IP,只需在引用程序初始化的时候将HTTP_X_FORWARDED_FOR的IP赋给REMOTE_ADDR就可以了。比如WordPress平台,可以在wp-config.php文件的最后加上下面几行代码:

/** Restore visitor's real ip when run on openshift */    
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))   
   $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];  

这样应用程序就可以获取到访客的真实IP地址(如果用户使用Proxy访问,也有可能是Proxy的地址):

visitors‘ real ip

关键字:OpenShift, PaaS, proxy

本文链接:树叶的BLOG >> 获取OpenShift访客的真实IP

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。

上一篇 : Evernote 去广告补丁 下一篇 : 自动备份OpenShift数据到Dropbox(1)—Dropbox Uploader的配置