网站使用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'];

}
相关推荐
..过云雨8 分钟前
18.【网络】多路转接select系统调用详解 - 修正版
网络
资深电气设计17 分钟前
明治MLD25系列激光位移传感器技术解析:3C行业零件厚度测量方案参考
网络
hz5678923 分钟前
数据本地化音视频系统设计:数据存储、传输路径与访问权限管理
网络·安全·音视频·实时音视频·信息与通信
voipmaker30 分钟前
融合通信工程实战:SIP 与 GB28181 联合接入布控球的常见问题
科技·物联网·网络协议·音视频·实时音视频·信息与通信·政务
笨手笨脚の41 分钟前
从一行 ip route 到容器跨主机通信
网络·网络协议·tcp/ip
mmsx44 分钟前
Android 模块化三件套:轻量组件化、宿主插件双形态、AIDL 隔离
android·网络·组件化·aidl
czt_java1 小时前
网络基础入门:IPv4、IPv6、私网公网、MAC、以太网帧与 DNS 学习笔记
网络·学习·macos
是个西兰花1 小时前
http讲解
网络·网络协议·http
tianbin9111 小时前
中小团队大模型训练落地实战:如何借助API网关降低工程负担
网络·后端