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

}
相关推荐
木木em哈哈1 天前
记一次在线编辑器的探索
linux·服务器·网络
一个有温度的技术博主1 天前
网安实验系列一:Burp Suite探测敏感信息路径
网络·安全
我要成为嵌入式大佬1 天前
正点原子MP157--问题详解--二(NFS挂载根文件系统双网卡设置)
linux·服务器·网络
lifejump1 天前
双冗余链路实现(2/2期)
网络
F1FJJ1 天前
Shield CLI PostgreSQL 插件现已上架 VS Code 扩展市场
网络·vscode·网络协议·postgresql·开源软件
123过去1 天前
responder使用教程
linux·网络·测试工具·安全·哈希算法
不知名。。。。。。。。1 天前
数据链路层
linux·网络
liulilittle1 天前
OPENPPP2 sysnat loader implement / C/C++
服务器·c语言·开发语言·网络·c++·tcp/ip
lpfasd1231 天前
OpenRouter低延迟使用中国Token算力
网络·token
CQU_JIAKE1 天前
3.23【A】
linux·服务器·网络