如果你使用的宝塔或Nginx,可以在宝塔面板或Nginx中,找到配置文件增加如下代码后,重载配置或者重启 Nginx 即可:
#CDN获取真实ip??
set_real_ip_from?0.0.0.0/0;??
real_ip_header?X-Forwarded-For;
如果你使用的PHP语言,可以使用以下函数解决获取不到真实IP问题。
function?GetClientIP(){
$ip?=?$_SERVER["HTTP_X_FORWARDED_FOR"];
if($ip?!=?""){
?$arr?=?explode(",",$ip);
?return?$arr[0];
}else{
?return?$_SERVER["REMOTE_ADDR"];
}
}
完整示例代码:
<?php
$real_ip?=?'';
if?(isset($_SERVER['HTTP_X_FORWARDED_FOR']))?{
????$arr?=?explode(',',?$_SERVER['HTTP_X_FORWARDED_FOR']);
????$pos?=?array_search('unknown',?$arr);
????if?(false?!==?$pos)?{
????????unset($arr[$pos]);
????}
????$real_ip?=?trim($arr[0]);
}?elseif?(isset($_SERVER['HTTP_CLIENT_IP']))?{
????$real_ip?=?$_SERVER['HTTP_CLIENT_IP'];
}?elseif?(isset($_SERVER['REMOTE_ADDR']))?{
????$real_ip?=?$_SERVER['REMOTE_ADDR'];
}