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

}
相关推荐
czy878747517 分钟前
深入理解 TCP 协议中三次握手建立连接和四次挥手关闭连接的核心逻辑
网络·网络协议·tcp/ip
咖啡の猫23 分钟前
微信小程序网络数据请求
网络·微信小程序·小程序
boring_11128 分钟前
AI时代本质的思考
网络·人工智能·智能路由器
Lam㊣34 分钟前
Ubuntu(Ubuntu 22.04.4 LTS)更改IP地址及网关
tcp/ip·ubuntu·php
BEOL贝尔科技35 分钟前
通过采集器监测环境的温湿度如果这个采集器连上网络接入云平台会发生什么呢?
网络·人工智能·数据分析
这儿有一堆花41 分钟前
实战:FastAPI与WebSocket的高并发足球数据API开发指南
websocket·网络协议·fastapi
wearegogog12342 分钟前
基于MATLAB的D2D仿真场景实现
开发语言·网络·matlab
Godspeed Zhao1 小时前
现代智能汽车中的无线技术00——智能汽车的无线依赖
网络·汽车
独自破碎E1 小时前
【字符串分割】验证IP地址
服务器·网络·tcp/ip
数通工程师1 小时前
实操教程:华为防火墙HRP主备模式完整配置步骤
运维·服务器·网络·网络协议·tcp/ip·华为