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 へリダイレクトするよう設定しています。 単純ですが抜けもれなくすべてリダイレクトできるのでこの方法が便利かな、と思います。
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!