xiuno网站使用CDN后获取真实IP教程

已认证 已通过实名认证 xiuno
管理员
官方成员
2022-8-22 694

首先,需修改配置文件conf/conf.php  ,修改 'cdn_on' => 0  为  'cdn_on' => 1,一般情况下即可正确获取真实IP。


如果不行,因为xiuno默认使用不安全的获取IP方式,部分情况下载无法准确获取CDN传递的真实IP,因此需要修改文件:


xiunophp/misc.func.php  ,位置531行处,注释掉代码段

/*function ip() {
	$conf = _SERVER('conf');
	$ip = '127.0.0.1';
	if(empty($conf['cdn_on'])) {
		$ip = _SERVER('REMOTE_ADDR');
	} else {
		if(isset($_SERVER['HTTP_CDN_SRC_IP'])) {
			$ip = $_SERVER['HTTP_CDN_SRC_IP'];
		} elseif(isset($_SERVER['HTTP_CLIENTIP'])) {
			$ip = $_SERVER['HTTP_CLIENTIP'];
		} elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
			$ip = $_SERVER['HTTP_CLIENT_IP'];
		} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
			$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
			$arr = array_filter(explode(',', $ip));
			$ip = trim(end($arr));
		} else {
			$ip = _SERVER('REMOTE_ADDR');
		}
	}
	return long2ip(ip2long($ip));
}*/



去掉555行函数的注释,如下:

// 安全获取用户IP,信任 CDN 发过来的 X-FORWARDED-FOR
function ip() {
	global $conf;
	$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1'; // 如果有 CDN 的时候,为离服务器最近的 IP
	if(empty($conf['cdn_ip']) || empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		return $ip;
	} else {
		// 判断 cdnip 合法性,严格过滤 HTTP_X_FORWARDED_FOR
		// X-Forwarded-For: client1, proxy1, proxy2, ...
		// 离服务器最最近的为最后一个 proxy2,应该在 $conf['cdn_ip'] 当中才安全可信
		foreach($conf['cdn_ip'] as $cdnip) {
			$pos1 = strrpos($cdnip, '.');
			$pos2 = strrpos($ip, '.');
			// 合法 CDN IP 段
			if($ip == $cdnip || ($pos1 == $pos2 && substr($cdnip, $pos1) == '.*' && substr($cdnip, 0, $pos1) == substr($ip, 0, $pos2))) {
				$userips = !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['HTTP_X_REAL_IP'];
				if(empty($userips)) return $ip; // 此处 CDN 未转发 userip,有错误,可能需要记录日志
				$arr = array_values(array_filter(explode(',', $userips)));
				return long2ip(ip2long(end($arr)));
			}
		}
		return $ip;
	}
}
// 日志记录



然后保存并更新缓存,即可获取CDN传递的用户真实IP地址了。

最后于 2022-8-28 被xiuno编辑 ,原因:

未登录提示:


关闭
他们喜欢这个资源
  • 晴阳
  • 队长?不借钱不帮忙
  • q476037492
  • 榻榻米
  • ZAESKY
  • aa123
  • AW
  • 科技化
  • 乌鸦救赎
  • Aliens
  • qiange2018
  • xzw11111
  • 淮安亮亮
最新回复 (1)
  • 已通过实名认证 科技化
    黑铁
    2
    珍惜生命,果断回帖。
    2022-11-17 回复
    • Xiuno顶尖网
      3
        登陆 注册
  • 淮安亮亮
    3
     点击可以快捷回复 感谢 支持 不错 无奈 一般 生气 回帖 路过 顶帖
    表情
在线客服

特别说明

QQ客服仅提供有偿服务,如无付费意愿,请勿扰!一般问题请站内发帖咨询!
服务项目:
1,xiuno插件模板定制开发
2,xiuno网站BUG修复
3,xiuno个性化定制
4,xiuno仿站等

客服工作时间:8:00~22:00
在线客服