帮助文档

CDN加速后获取用户直实出口IP方法

使用CDN(内容分发网络)加速网站后,直接从HTTP请求中获取的客户端IP地址通常是CDN边缘服务器的IP地址,而不是用户的真实IP地址。这是因为当用户访问通过CDN服务的内容时,实际上是先连接到了最近的CDN节点上,然后该节点再代表用户向原始服务器请求资源。为了解决这个问题并准确地获取到用户的真实IP地址,可以采取以下几种方法:

  1. X-Forwarded-For (XFF) 头: 这是最常用的方法之一。当请求经过多个代理或网关(包括CDN)转发到达最终服务器时,每个代理都会在这个头部添加一个条目来记录它接收到请求时客户端的IP地址。因此,X-Forwarded-For头通常包含一系列IP地址,其中第一个非私有IP地址往往就是用户的实际IP地址。需要注意的是,并非所有CDN提供商默认都会设置这个头信息,可能需要在配置中启用相关选项。
  2. True-Client-IP 头: 一些CDN服务提供商会使用特定的自定义头如 True-Client-IP 来传递真实客户端IP地址给源站服务器。例如,Azure CDN就支持这种方式。请查阅您所使用的CDN文档以确认是否支持及如何启用此类功能。
  3. CF-Connecting-IP 头: 如果您正在使用Cloudflare作为您的CDN服务,则可以通过检查名为CF-Connecting-IP的请求头来获得用户的真实IP地址。这是Cloudflare特别为此目的而设的一个头字段。
  4. 修改Web应用逻辑:对于自行管理的应用程序代码来说,可以根据上述方法之一调整服务器端脚本或框架设置,以便正确解析出并使用真正的客户端IP地址。比如,在PHP环境中可以通过$_SERVER['HTTP_X_FORWARDED_FOR']变量读取X-Forwarded-For值;而在Node.js Express应用里则可能需要安装额外的中间件来处理这种情况。
  5. 安全考虑:虽然利用这些技术可以帮助你获取到用户的真实IP地址,但也要注意安全性问题。因为这些头部信息是可以被伪造的,所以在进行敏感操作前应确保对IP地址的真实性进行验证。

最后,请根据自己的具体需求选择合适的方法,并参考相应CDN服务商提供的官方文档来进行正确的配置。