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

宝塔或Nginx环境

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

php 复制代码
#CDN获取真实ip  

set_real_ip_from 0.0.0.0/0;  

real_ip_header X-Forwarded-For;

PHP语言函数方法

如果你使用的PHP语言,可以使用以下函数解决获取不到真实IP问题。

php 复制代码
function GetClientIP(){

$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];

if($ip != ""){

 $arr = explode(",",$ip);

 return $arr[0];

}else{

 return $_SERVER["REMOTE_ADDR"];

}

}

完整示例代码:

php 复制代码
<?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'];

}
相关推荐
老王熬夜敲代码1 分钟前
网路编程--协议
linux·网络·笔记
北邮刘老师5 分钟前
智能体,超越人类与机器的世界“理解者”
网络·人工智能·大模型·智能体·智能体互联网
A132470531241 分钟前
SSH远程连接入门:安全高效地管理服务器
linux·运维·服务器·网络·chrome·github
yenggd1 小时前
企业总部-分支-门点-数据中心使用骨干网SRv6 BE互联互通整体架构配置案例
运维·网络·计算机网络·华为·架构
FserSuN1 小时前
TCP RST 与 Broken Pipe:从协议语义到操作系统信号的体系化梳理
网络·网络协议·tcp/ip
fiveym1 小时前
PXE启动菜单配置完全指南:打造高效网络装机入口
开发语言·网络·php
青山如墨雨如画1 小时前
【北邮-研-图论】网络最大流的标号算法V1.0
网络·算法·图论·北邮
星环处相逢1 小时前
Ansible-Playbook 剧本编写全攻略:从入门到进阶
linux·服务器·网络
一岁天才饺子1 小时前
SSRF漏洞绕过与漏洞解决
网络·网络安全·ssrf
AI即插即用2 小时前
即插即用系列 | CMPB PMFSNet:多尺度特征自注意力网络,打破轻量级医学图像分割的性能天花板
网络·图像处理·人工智能·深度学习·神经网络·计算机视觉·视觉检测