sitepoint javascript node.js ssl https express

javascript - sitepoint - cucumber js



Forzar SSL con expressjs 3 (2)

Estoy ejecutando un servidor node.js express 3 sin proxy y usando SSL.

Estoy intentando descubrir cómo forzar todas las conexiones para pasar por https.

La búsqueda en Google me muestra esto:

https://groups.google.com/forum/#!topic/express-js/Bm6yozgoDSY

Actualmente no hay forma de forzar las redirecciones de https, aunque eso parece ser un poco extraño. Tenemos una aplicación de solo https y solo tenemos un servidor simple ~ 4 de nodo de línea que redirige, nada elegante

Que es lo que necesito, pero él no dice cuáles son esas 4 líneas.

Cómo hacemos esto? Gracias.


Debería crear un segundo servidor escuchando en 80 y redirigir con un encabezado 301 a su servidor https:

var express = require(''express''); var app = express(); app.get(''/'', function(req, res, next){ res.redirect(''https://'' + app.address().address) }); app.listen(80);


Realmente no entiendo el punto de comenzar dos servidores cuando solo uno puede hacer el trabajo perfectamente. Por ejemplo, al agregar un middleware simple en su archivo de servidor:

app.use(function(req, res, next) { if(!req.secure) { return res.redirect([''https://'', req.get(''Host''), req.url].join('''')); } next(); });

Esto redirigirá cualquier solicitud no segura a la página HTTPS correspondiente. Por ejemplo, http://example.com/ a https://example.com/ y http://example.com/foo?bar=woo a https://example.com/foo?bar=woo . Este es definitivamente el comportamiento que esperaría. Tal vez deberías filtrar esto por el host, por lo que redirige solo en los dominios que posees e instaló un certificado adecuado.

Si su aplicación se ejecuta detrás de otro servidor como Nginx, es posible que desee agregar el parámetro de configuración app.set(''trust proxy'', true) . O, mejor aún, haz que Nginx haga el redireccionamiento, que será más eficiente que cualquier aplicación de Node.js.

Editar: de acuerdo con mis puntos de referencia, join es un poco más rápido que + para concatenar cadenas. Nada dramático, pero cada victoria es una victoria ...