Node.js + Express で HTTP から HTTPS へ 自動リダイレクト させる方法

0 件のコメント

Node.js + Exprss で HTTPSサーバー 構築した際、http でアクセスしてきた通信を https 強制リダイレクトさせる方法を考えました。 といっても難しいことはせずできるだけ単純な実装にしています。

自動リダイレクト の サンプルコード

var express = require("express");
var fs = require("fs");
var http = require("http");
var https = require("https");

var app = express();

var options = {
    pfx: fs.readFileSync("./private/localhost.pfx"),
    passphrase: "Passw0rd"
};

app.get("/", function (request, response) {
    response.writeHead(200);
    response.end("Hello World.");
});

http.createServer((express()).all("*", function (request, response) {
    response.redirect(`https://${request.hostname}${request.url}`);
})).listen(80);
https.createServer(options, app).listen(443);

httpへのアクセスはすべてリダイレクトしたいので Express の 別インスタンス を準備してすべて https へリダイレクトするよう設定しています。 単純ですが抜けもれなくすべてリダイレクトできるのでこの方法が便利かな、と思います。