Cloudflare changes the IP addresses of incomming requests because Cloudflare is a middleware between my website and the Internet, a proxy.
How should I get the initial IP address of the request, not Cloudflare its IP address. I heard about the mod_cloudflare
but does this plugin only updates the IP address in my logs (?) And I didn't find a version for Nginx.
Cloudflare sets the CF-Connecting-IP
and the X-Forwarded-For
headers on every request
You can simply get the IP from their special header:
let ip = req.headers['cf-connecting-ip']
If you expect requests outside of Cloudflare, you can get these IPs the following way:
let otherIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress
Though, be wary, that other Proxies (like Nginx) will also set the x-forwarded-for
header.