I’m running a node.js express 3 server with no proxies and using SSL.
I’m trying to figure out how to force all connections to go through https.
Google searching shows me this:
https://groups.google.com/forum/#!topic/express-js/Bm6yozgoDSY
There’s currently no way to force https redirects, though that seems
like a bit of a strange work-around. We have an https-only app and we
just have a simple ~4 line node http server that redirects, nothing
fancy
Which is what I need, but he doesn’t say what those 4 lines are.
How do we do this? Thanks.
I don’t really understand the point in starting two servers when only one can do the job perfectly. For example, by adding a simple middleware in your server file:
This will redirect any non-secure request to the corresponding HTTPS page. For example,
http://example.com/tohttps://example.com/andhttp://example.com/foo?bar=wootohttps://example.com/foo?bar=woo. This is definitely the behavior I would expect. Maybe you should filter this by host, so it redirects only on domains for which you own and installed a proper certificate.If your app is running behind another server like Nginx, you may want to add the configuration parameter
app.set('trust proxy', true). Or, even better, make Nginx do the redirect itself, which will be more efficient than any Node.js app.Edit: According to my benchmarks,
joinis a little faster than+for concatenating strings. Nothing dramatic, but every win is a win…