Create a gist now

Instantly share code, notes, and snippets.

@qiao /ip.js
Created Jan 17, 2012

What would you like to do?
Node.js get client IP address
// snippet taken from
function getClientIp(req) {
var ipAddress;
// The request may be forwarded from local web server.
var forwardedIpsStr = req.header('x-forwarded-for');
if (forwardedIpsStr) {
// 'x-forwarded-for' header may return multiple IP addresses in
// the format: "client IP, proxy 1 IP, proxy 2 IP" so take the
// the first one
var forwardedIps = forwardedIpsStr.split(',');
ipAddress = forwardedIps[0];
if (!ipAddress) {
// If request was not forwarded
ipAddress = req.connection.remoteAddress;
return ipAddress;

半年过去接口似乎变了, 我打印了 req 然后发现下面这样可以用. 总算还好

getClientIp = (req) ->
  x_ip = req.headers['x-forwarded-for']
  unless x_ip? then x_ip = req.connection.remoteAddress

ghost commented Nov 10, 2012

function getClientAddress(request){ 
        return (headers['x-forwarded-for'] || '').split(',')[0] 
            || connection.remoteAddress

talon commented Feb 27, 2013

var getClientAddress = function (req) {
    return (req.headers['x-forwarded-for'] || '').split(',')[0] 
        || req.connection.remoteAddress;

Will that work? If so that is really concise and quite nice. I didn't know you could get so creative with the ||'s!

i am using express 3.4.8 i have enable trusted proxy by app.enable('trust proxy') ,my req.headers does not contain X-Forward-For

The header can be x-forwarded-for or X-Forwarded-For, so:

var getClientIp = function(req) {
    return (req.headers["X-Forwarded-For"] ||
            req.headers["x-forwarded-for"] ||
            '').split(',')[0] ||

aderbas commented Nov 5, 2015

var ip = req.headers["X-Forwarded-For"] || req.connection.remoteAddress;

Always returns the host IP and not the client IP in my case.

X-Forwarded-For? You're checking easily spoofed headers to get an IP?

If you install gentoo you don't need all of this

Can we to find the user's IP telegram?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment