很多站长都会遇到这样的问题,网站使用CDN加速后,统计分析工具提供的用户访问IP地址大多非真实IP地址。
这是因为使用CDN网络加速后,所有的用户请求都会通过CDN边缘节点访问,如边缘节点没有缓存,就会向客户源站服务器发起请求,故无法依照之前的方式获取最终用户IP地址。
如果站长需要获取最终用户IP,则可根据网站编写的脚本语言自行选择下列代码。
PHP:
$user_IP ($_SERVER["HTTP_X_REAL_IP"]);
ASP:
<% Request.ServerVariables("HTTP_X-Real-IP") %>
Java:
String srcIp request.getHeader("X-Real-IP");
C#:
String srcIp Request.Headers["X-Real-IP"];
Asp.net:
如果用ServerVariables来获取参数,因为ServerVariables有编码解码的过程,因此应该用HTTP_Cdn_Src_Ip来获取变量,如:
result HttpContext.Current.Request.ServerVariables["HTTP_X-Real-IP"];
另外,老刘博客提醒各位站长,我们需要注意的是以上代码需要在切换后才能正式生效,如未切换则可能导致获取IP错误。当然需要采购cdn加速的站长们也可参见老刘博客前文《CDN国内/国际加速流量包0.06元/GB起,续费享长期5折》。