返回列表 发布新帖
查看: 76|回复: 0

网站使用CDN时如何正确获取用户IP地址

  • 打卡等级:即来则安
  • 打卡总天数:24
  • 打卡月天数:17
  • 打卡总奖励:5300
  • 最近打卡:2024-12-25 08:05:04

89

主题

3

回帖

691

积分

Lv.9

积分
691

2024万圣节纪念币社区杰出贡献勋章种子用户勋章2024龙年纪念币

发表于 2024-11-24 21:31:58 | 查看全部 |阅读模式
当网站挂载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配置中添加以下代码:



  1. set_real_ip_from 0.0.0.0/0;
  2. real_ip_header X-Forwarded-For;
复制代码
  • 对于Apache服务器:可以使用mod_remoteip模块来获取用户的真实IP。

  • PHP代码示例:如果是使用PHP,可以直接在代码中获取真实IP,如下所示:



if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
    $list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    $_SERVER['REMOTE_ADDR'] = $list[0];
}
通过上述方法,即使网站使用了CDN,也能够获取到用户的真实IP地址。这对于记录访问日志、安全监控以及遵守某些法律法规要求记录用户IP地址的场景非常有用。




或者使用如下代码


在宝塔面板的网站"配置文件"中添加如下代码:
  1. set_real_ip_from 0.0.0.0/0;
  2. real_ip_header X-Forwarded-For;
  3. real_ip_recursive on;
复制代码


回复

使用道具 举报

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

本版积分规则

服务支持

社区监狱 封禁类型
投诉/建议联系

fankui@shequla.com

未经授权禁止转载,复制和建立镜像
如有违反,追究法律责任
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2024 社区啦 - 小众的中文社区 版权所有 All Rights Reserved. |网站地图 冀ICP备2022019298号
关灯 在本版发帖
手机扫一扫访问
官方Q群返回顶部
快速回复 返回顶部 返回列表