服务器配置

网站使用CDN后无法获取用户真实IP的解决方法

我的站长站 2023-12-11 人阅读

宝塔或Nginx环境

如果你使用的宝塔或Nginx,可以在宝塔面板或Nginx中,找到配置文件增加如下代码后,重载配置或者重启 Nginx 即可:

#CDN获取真实ip  
set_real_ip_from 0.0.0.0/0;  
real_ip_header X-Forwarded-For;

网站使用CDN后无法获取用户真实IP的解决方法

PHP语言函数方法

如果你使用的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'];
}


最新更新