Vynutit SSL pomocí expressjs 3

Opravdu nechápu smysl zakládání dvou serverů, když jen jeden může dělat práci dokonale. Například přidáním jednoduchého middlewaru do souboru serveru:

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

To přesměruje jakýkoli nezabezpečený požadavek na odpovídající stránku HTTPS. Například http://example.com/ do https://example.com/ a http://example.com/foo?bar=woohttps://example.com/foo?bar=woo . Toto je rozhodně chování, které bych očekával. Možná byste to měli filtrovat podle hostitele, aby se přesměrovávalo pouze na domény, pro které vlastníte a nainstalujete správný certifikát.

Pokud vaše aplikace běží za jiným serverem, jako je Nginx, možná budete chtít přidat konfigurační parametr app.set('trust proxy', true) . Nebo, ještě lépe, přimějte Nginx, aby provedl přesměrování sám, což bude efektivnější než jakákoli aplikace Node.js.

Upravit: Podle mých benchmarků join je o něco rychlejší než + pro zřetězení řetězců. Nic dramatického, ale každá výhra je výhrou...