NodeJS - Получить реальный IP-адрес запроса вместо IP-адреса Cloudflare - PullRequest
0 голосов
/ 26 августа 2018

Cloudflare изменяет IP-адреса входящих запросов, потому что Cloudflare - это промежуточное ПО между моим веб-сайтом и Интернетом, прокси.

Как мне получить начальный IP-адрес запроса , а не Cloudflare его IP-адрес.Я слышал о mod_cloudflare, но этот плагин только обновляет IP-адрес в моих журналах (?), И я не нашел версию для nginx.

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Вы используете экспресс?Если это так, вы можете использовать пакет промежуточного программного обеспечения 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, использовать значение trust proxy для экспресса .

Например:

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

Другие платформы обработки запросов, скорее всего, имеют свои собственные пакеты для выполнения аналогичных действий.

0 голосов
/ 26 августа 2018

Cloudflare устанавливает заголовки CF-Connecting-IP и X-Forwarded-For при каждом запросе

Вы можете просто получить IP из этого заголовка:

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

Iвыбрал порядок, потому что Nginx также устанавливает заголовок X-Forwarded-For

...