- 打卡等级:即来则安
- 打卡总天数:24
- 打卡月天数:17
- 打卡总奖励:5300
- 最近打卡:2024-12-25 08:05:04
Lv.9
- 积分
- 691
|
当网站挂载CDN后,确实会遇到无法直接获取用户真实IP地址的问题,因为CDN节点会作为代理服务器处理用户的请求,并将请求转发到源服务器。这样,源服务器看到的IP地址实际上是CDN节点的IP地址,而不是用户的真实IP地址。不过,这个问题可以通过配置服务器来解决。
根据搜索结果,以下是几种获取用户真实IP地址的方法:
利用HTTP请求头部信息:CDN通常会在回源请求的HTTP头部中添加一些特殊的字段,如X-Forwarded-For或X-Real-IP,用以传递用户的真实IP地址。后端服务器可以通过检查这些头部字段来获取用户的真实IP。 配置Nginx服务器:在Nginx服务器中,可以配置set_real_ip_from指令来指定哪些IP地址是可信的代理服务器,并通过real_ip_header指令指定从哪个请求头中获取真实的IP地址。例如,可以在Nginx配置中添加以下代码:
- set_real_ip_from 0.0.0.0/0;
- real_ip_header X-Forwarded-For;
复制代码
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
} 通过上述方法,即使网站使用了CDN,也能够获取到用户的真实IP地址。这对于记录访问日志、安全监控以及遵守某些法律法规要求记录用户IP地址的场景非常有用。
或者使用如下代码
在宝塔面板的网站"配置文件"中添加如下代码:
- set_real_ip_from 0.0.0.0/0;
- real_ip_header X-Forwarded-For;
- real_ip_recursive on;
复制代码
|
|