Home > front end >  Why does NodeJs req.get('host') result to localhost:3000 on digital ocean instead of my ac
Why does NodeJs req.get('host') result to localhost:3000 on digital ocean instead of my ac

Time:09-04

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.

CodePudding user response:

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.

CodePudding user response:

I think it's related to your dns settings in digital ocean panel they explain it here

WILL DIRECT TO, which can be set to: 
A DigitalOcean Droplet or Load Balancer by typing its name and selecting it from the menu.

Its possible that you use WILL DIRECT TO option and because it's redirected the hostname is localhost

  • Related