I can't use nodejs/expressjs to get the client IP address behind a Digital Ocean Loadbalancer when using "req.headers['x-forwarded-for'];".

September 14, 2018 55 views
Load Balancing Node.js Dokku Ubuntu 16.04

I cannot use nodejs with expressjs to get the client IP address (enabled with ssl) behind a Digital Ocean Loadbalancer when using "req.headers['x-forwarded-for'];".

To manage the droplet I use "dokku" witch installs "nginx".

How can I get the real client IP address behind a Digital Ocean Loadbalancer with a SSL connection?

Please help me.

1 Answer
smauer September 14, 2018
Accepted Answer

I have found the error that makes "dokku" in the configuration of nginx.

You must replace
proxysetheader X-Forwarded-For $remote_addr;

TO
proxysetheader X-Forwarded-For $httpxforwarded_for;

in the following file:
/home/dokku/yourappname/nginx.conf

I hope this helps someone else as well.

Have another answer? Share your knowledge.