繁体   English   中英

NodeJS - 获取请求的真实IP地址,而不是Cloudflare的IP地址

[英]NodeJS - Get real ip address of a request instead of Cloudflare's ip address

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

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

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

您只需从该标头获取IP:

let ip = req.headers['cf-connecting-ip'] || req.headers['x-forwarded-for'] || req.connection.remoteAddress

我选择了订单,因为Nginx还设置了X-Forwarded-For标头

你在使用快递吗? 如果是这样,您可以使用cloudflare-express中间件包来检索您需要的IP地址。

var cloudflare = require('cloudflare-express');
...
var express = require('express');
var app = express();
...
app.use(cloudflare.restore({update_on_start:true}));

然后,用户的原始地址在req对象上显示为cf_ip

如果您的快速应用程序位于典型的nginx反向代理后面,您也可以使用express的trust proxy设置

例如:

    app.set( 'trust proxy', 'loopback' ); //trust localhost reverse proxy

其他请求处理框架很可能有自己的包来做类似的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM