Why does NodeJs req.get('host') result to localhost:3000 on digital ocean instead of my actual domain name

Issue

I have a droplet on digital ocean. Everything works fine and is configured properly. However, I have nodeJs running on this droplet.
This code req.get(‘host’) outputs localhost:3000 instead of my domain name.
Please how do i fix this, what file do i need to make this change.

Solution

I found it in the docs of expressJs.
I observed digital ocean is proxying my requests, therefore adding the hostname in x-forwarded-host header property.

http://expressjs.com/en/5x/api.html#req.host

When the trust proxy setting does not evaluate to false, this property will instead get the value from the X-Forwarded-Host header field. This header can be set by the client or by the proxy.

If there is more than one X-Forwarded-Host header in the request, the value of the first header is used. This includes a single header with comma-separated values, in which the first value is used.

Answered By – Chidozie Duru

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published