返回列表 发帖
查看: 171|回复: 5

(续)discuz使用EdgeOne后获取客户真实ip教程

328

主题

1394

回帖

1922

积分

已臻大成

贡献
14 点
金币
8 个
发表于 4 天前 来自手机 | 查看全部 |阅读模式


先说优点:为什么推荐使用EO
收费个人版每月不到10元月租,一般个人站长也足够用了
它提供静动态智能链路加速,TCP/UDP四层代理,Web应用防火墙、多路复用与协议优化,和基础防DOSS能力一应俱全的CDN
加速效果非常明显
(怎么看起来像给EdgeOne打广告,其实还真不是,没人给广告费,哈哈)

在使用过程中发现,获取到的用户来源 IP 均为 CDN 节点 IP,而非真实客户端 IP。这在查看和处理日志时带来了一些麻烦,尤其是在拦截恶意 IP 或爬虫时,容易误封 CDN 节点地址。


上次写过一次类似教程,但发现了很多问题
所以准备重写
腾讯云EdgeOne 提供永久免费版申请,具体详情https://cloud.tencent.com/document/buy-guide/1552/118985
就是申请比较麻烦

教程:
1、站点加速-规则引擎-创建规则-新增空白规则(如果已有规则在原规则下面添加即可)
完成后如下图:
1000019207.jpg

2、具体说明
点击操作,选择客户端ip头部,命名为 “EO-Client-IP”

1000019223.jpg
1000019209.jpg

3、返回宝塔
在/www/server/nginx/conf/ 目录下新建文件 命名为 tencent_eo_ips.conf
打开tencent_eo_ips.conf文件里面添加腾讯云EO回源ip段,格式大概是这样的
1000019213.jpg

注:如果不知道回源ip节点,在eo控制台找到安全防护-源站防护里找


4、宝塔-网站-配置文件
在配置文件顶部增加
游客,如果您要查看本帖隐藏内容请回复

5、/condig/config_global.php  (这步也可以忽略,我是加上了)
搜索:
  1. $_config['ipgetter']['setting'] = 'header';
复制代码
下面添加
  1. $_config['ipgetter']['header']['header'] = 'HTTP_EO-Client-IP';
复制代码

完成


最后:给个最简单的测试方式,把这一个php文件放到网站根目录  (1L有完整代码也可以免下载自己去添加)
2.zip (1.82 KB, 下载次数: 3)
然后运行 https://你网站/2.php

预览:
1000019221.jpg

如果还有什么不明白跟帖回复
1000019211.jpg
回复

使用道具 举报

328

主题

1394

回帖

1922

积分

已臻大成

贡献
14 点
金币
8 个
 楼主| 发表于 4 天前 来自手机 | 查看全部
测试方式
在论坛根目录新建php文件
内容:
  1. <?php
  2. // 增强版客户端IP测试(腾讯云EdgeOne专用)
  3. echo "<h2>腾讯云EdgeOne客户端IP测试</h2>";

  4. // 1. 核心IP字段检测
  5. $ipSources = [
  6.     'REMOTE_ADDR' => '服务器直接连接IP',
  7.     'HTTP_X_FORWARDED_FOR' => '代理链IP(可能包含多个)',
  8.     'HTTP_EO_CLIENT_IP' => 'EdgeOne客户端IP',
  9.     'HTTP_EO_CONNECTING_IP' => 'EdgeOne连接IP',
  10.     'HTTP_X_REAL_IP' => 'Nginx真实IP',
  11.     'HTTP_CF_CONNECTING_IP' => 'Cloudflare专用头(兼容性检测)'
  12. ];

  13. echo "<h3>📌 核心IP地址信息:</h3>";
  14. foreach ($ipSources as $key => $desc) {
  15.     $value = $_SERVER[$key] ?? '未设置';
  16.     $highlight = (strpos($value, '.') !== false) ? "style='color:red;font-weight:bold'" : "";
  17.     echo "<b>{$desc}</b> [{$key}]: <span {$highlight}>{$value}</span><br>";
  18. }

  19. // 2. EdgeOne专属头检测
  20. $eoHeaders = [
  21.     'HTTP_CDN_LOOP' => 'CDN循环标识',
  22.     'HTTP_EO_LOG_UUID' => '请求唯一ID',
  23.     'HTTP_X_FORWARDED_PROTO' => '传输协议',
  24.     'HTTP_CDN_SRC_IP' => 'CDN源IP(如有)'
  25. ];

  26. echo "<h3>🔍 EdgeOne专属头信息:</h3>";
  27. foreach ($eoHeaders as $key => $desc) {
  28.     $value = $_SERVER[$key] ?? '未设置';
  29.     echo "<b>{$desc}</b> [{$key}]: {$value}<br>";
  30. }

  31. // 3. 安全与协议头检测
  32. $securityHeaders = [
  33.     'HTTP_SEC_CH_UA' => '用户代理品牌',
  34.     'HTTP_SEC_CH_UA_MOBILE' => '移动设备标识',
  35.     'HTTP_SEC_CH_UA_PLATFORM' => '操作系统',
  36.     'HTTP_X_FORWARDED_PROTO' => '前端协议',
  37.     'HTTP_X_FORWARDED_PORT' => '前端端口'
  38. ];

  39. echo "<h3>🛡️ 安全与协议信息:</h3>";
  40. foreach ($securityHeaders as $key => $desc) {
  41.     $value = $_SERVER[$key] ?? '未设置';
  42.     echo "<b>{$desc}</b> [{$key}]: {$value}<br>";
  43. }

  44. // 4. 完整头信息(过滤后)
  45. echo "<h3>📋 完整相关头信息:</h3>";
  46. foreach ($_SERVER as $key => $value) {
  47.     // 过滤显示关键头信息
  48.     if (strpos($key, 'HTTP_') === 0 ||
  49.         strpos($key, 'REMOTE_') === 0 ||
  50.         strpos($key, 'CDN_') === 0 ||
  51.         strpos($key, 'EO_') === 0) {
  52.         echo "<b>{$key}</b>: " . htmlspecialchars($value) . "<br>";
  53.     }
  54. }

  55. // 5. 客户端真实IP判定逻辑
  56. echo "<h3>🔐 客户端真实IP判定:</h3>";
  57. $clientIp = '';

  58. // EdgeOne优先检测
  59. if (!empty($_SERVER['HTTP_EO_CLIENT_IP'])) {
  60.     $clientIp = $_SERVER['HTTP_EO_CLIENT_IP'];
  61.     echo "<p style='color:green'>✅ 通过 HTTP_EO_CLIENT_IP 获取真实IP: {$clientIp}</p>";
  62. } elseif (!empty($_SERVER['HTTP_EO_CONNECTING_IP'])) {
  63.     $clientIp = $_SERVER['HTTP_EO_CONNECTING_IP'];
  64.     echo "<p style='color:green'>✅ 通过 HTTP_EO_CONNECTING_IP 获取真实IP: {$clientIp}</p>";
  65. }
  66. // 标准代理头检测
  67. elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  68.     $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
  69.     $clientIp = trim($ips[0]);
  70.     echo "<p style='color:orange'>⚠️ 通过 HTTP_X_FORWARDED_FOR 获取IP: {$clientIp} (需验证代理链)</p>";
  71. }
  72. // 最后回退方案
  73. else {
  74.     $clientIp = $_SERVER['REMOTE_ADDR'] ?? '未知';
  75.     echo "<p style='color:red'>❌ 使用 REMOTE_ADDR 作为IP: {$clientIp} (可能不是真实客户端IP)</p>";
  76. }

  77. // 6. IP地理位置查询
  78. if (filter_var($clientIp, FILTER_VALIDATE_IP)) {
  79.     $geoUrl = "http://ip-api.com/json/{$clientIp}?fields=status,country,regionName,city,isp,org,as";
  80.     $geoData = @file_get_contents($geoUrl);
  81.    
  82.     if ($geoData) {
  83.         $geoInfo = json_decode($geoData, true);
  84.         if ($geoInfo['status'] === 'success') {
  85.             echo "<h3>🌍 IP地理位置信息:</h3>";
  86.             echo "IP: {$clientIp}<br>";
  87.             echo "位置: {$geoInfo['country']} - {$geoInfo['regionName']} - {$geoInfo['city']}<br>";
  88.             echo "ISP: {$geoInfo['isp']}<br>";
  89.             echo "组织: {$geoInfo['org']}<br>";
  90.             echo "ASN: {$geoInfo['as']}";
  91.         }
  92.     }
  93. }

  94. // 7. 配置建议
  95. echo "<h3>🚀 EdgeOne配置建议:</h3>";
  96. echo "<ul>
  97. <li>确保EdgeOne的『客户端IP透传』功能已开启</li>
  98. <li>在源站服务器配置中启用『接受客户端IP头』选项</li>
  99. <li>在Nginx配置中添加: <code>real_ip_header X-Forwarded-For; set_real_ip_from 0.0.0.0/0;</code></li>
  100. <li>测试时清除浏览器缓存避免CDN缓存影响</li>
  101. </ul>";
  102. ?>
复制代码
回复

使用道具 举报

22

主题

172

回帖

208

积分

炉火纯青

贡献
0 点
金币
7 个
发表于 4 天前 | 查看全部
国内的要备案,国际版跟cloudflare有一比,速度感人
回复

使用道具 举报

1

主题

7

回帖

19

积分

初学乍练

贡献
0 点
金币
10 个
发表于 3 天前 | 查看全部
ZHEN正在用EO非常需要
回复

使用道具 举报

1

主题

43

回帖

72

积分

渐入佳境

贡献
0 点
金币
26 个
发表于 昨天 10:03 | 查看全部
免费版的能用这个方法吗
回复

使用道具 举报

328

主题

1394

回帖

1922

积分

已臻大成

贡献
14 点
金币
8 个
 楼主| 发表于 昨天 10:03 来自手机 | 查看全部
ji8123 发表于 2025-10-10 10:03
免费版的能用这个方法吗

完全一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2025-10-11 04:05 , Processed in 0.292827 second(s), 14 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表