首页 > 解决方案 > 获取请求的真实 IP 地址而不是 Cloudflare 的 IP 地址

问题描述

Cloudflare 会更改传入请求的 IP 地址,因为 Cloudflare 是我的网站和 Internet 之间的中间件,即代理。

我应该如何获取请求的初始 IP 地址,而不是 Cloudflare 的 IP 地址。我听说过,mod_cloudflare但是这个插件是否只更新我日志中的 IP 地址(?)而且我没有找到 NGINX 的版本。

标签: javascriptnode.jsnginxcloudflare

解决方案


Cloudflare在每个请求上设置CF-Connecting-IPX-Forwarded-For标头

您可以简单地从他们的特殊标头中获取 IP:

let ip = req.headers['cf-connecting-ip']

如果您期望 Cloudflare 之外的请求,您可以通过以下方式获取这些 IP:

let otherIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress

不过,请注意,其他代理(如 NGINX)也会设置x-forwarded-for标头。


推荐阅读