要获取通过CDN访问您网站的用户真实IP,您需要配置CDN服务商提供的特定功能,因为标准的HTTP头部信息(如X-Forwarded-For
)可能会被CDN改写或者不适用。以下是一些流行CDN服务商的方法:
- Amazon CloudFront: 使用
X-Forwarded-For
头部,但需要在CloudFront分配设置中进行特定配置。 - Cloudflare: 使用
X-Real-IP
或CF-Connecting-IP
头部。 - Google Cloud CDN: 使用
X-Forwarded-For
或X-Real-IP
头部。 - 国内商用CDN通常采用:
X-Forwarded-For 简称:xff
以下是一个简单的php示例代码,用于检查这些头部,以获取用户的真实IP地址:
<?php
$realIp = null;
// 根据您使用的CDN服务商选择合适的头部
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$realIp = $_SERVER['HTTP_X_REAL_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
// 如果需要从X-Forwarded-For中获取第一个IP
if ($realIp) {
$ips = explode(',', $realIp);
$realIp = trim($ips[0]);
}
// 使用$realIp变量,该变量包含用户的真实IP地址
echo $realIp;
?>
这段代码只是一个示例,您需要根据自己使用的CDN服务商进行相应的调整。在配置CDN时,确保启用了正确的头部信息传递设置,否则上述代码可能无法正常工作。