1 つのサーバーしか完全に機能しない場合に、2 つのサーバーを起動する意味がよくわかりません。たとえば、サーバー ファイルに単純なミドルウェアを追加すると、次のようになります。
app.use(function(req, res, next) {
if(!req.secure) {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
next();
});
これにより、非セキュアなリクエストが対応する HTTPS ページにリダイレクトされます。たとえば、http://example.com/tohttps://example.com/とhttp://example.com/foo?bar=wooto https://example.com/foo?bar=woo。これは間違いなく私が期待する動作です。これをホストでフィルタリングして、適切な証明書を所有してインストールしたドメインにのみリダイレクトする必要があるかもしれません。
アプリが Nginx などの別のサーバーの背後で実行されている場合は、構成パラメーターを追加することをお勧めしますapp.set('trust proxy', true)。または、さらに良いことに、Nginx 自体にリダイレクトを行わせます。これは、どの Node.js アプリよりも効率的です。
編集:私のベンチマークによると、文字列を連結joinするよりも少し高速です。+劇的なことは何もありませんが、すべての勝利は勝利です...