Search code examples
node.jsip

How to determine a user's IP address in node


How can I determine the IP address of a given request from within a controller? For example (in express):

app.post('/get/ip/address', function (req, res) {
    // need access to IP address here
})

Solution

  • In your request object there is a property called socket, which is a net.Socket object. The net.Socket object has a property remoteAddress, therefore you should be able to get the IP with this call:

    request.socket.remoteAddress
    

    (if your node version is below 13, use the deprecated now request.connection.remoteAddress)

    EDIT

    As @juand points out in the comments, the correct method to get the remote IP, if the server is behind a proxy, is request.headers['x-forwarded-for']

    EDIT 2

    When using express with Node.js:

    If you set app.set('trust proxy', true), req.ip will return the real IP address even if behind proxy. Check the documentation for further information