Forwarding http to https in node.js express app using EBS & ELB environment


I am using the following to redirect all http requests to https requests.

I can see from logs that the header ‘x-forwarded-proto’ is never populated and is undefined.

It is causing a redirect loop. How can I redirect properly without looping?


my original answer below is for express 3.x, for 4.x you can get a string http or https in req.protocol, thx @BrandonClark

use req.get, not req.headers. Note that POST requests and all other non-GET will not see this middleware.
It’s also possible that Express does not carry the x-forwarded-proto header across when you redirect. You may need to set it yourself.

Another way to force https:

Leave a Reply