簡體   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