获取请求的真实 ip 地址而不是 Cloudflare 的 ip 地址

Mic*_*iel 8 javascript nginx node.js cloudflare

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

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

Luc*_*bel 15

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

您可以简单地从该标头获取 IP:

let ip = req.headers['cf-connecting-ip']
Run Code Online (Sandbox Code Playgroud)

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

let otherIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress
Run Code Online (Sandbox Code Playgroud)

  • 这是否会让您面临来自非 Cloudflare 连接的欺骗?因此,Cloudflare 建议限制来自其 IP 的连接:https://support.cloudflare.com/hc/en-us/articles/200170786-Restoring-original-visitor-IPs (2认同)