ユーザーがhttpとhttpsの両方を使用してサイトのすべてのページにアクセスできるようにしたい。
また、暗号化が必要な特定のパス(/ api/*および/backend/ *)のhttpリクエストをhttpsにリダイレクトできるようにしたい(強制https)。
ノードバージョン:v0.9.10
docpadバージョン:v6.21.10
重要な注意:docpad構成ファイルのドキュメントが古くなっているようです。ソースを調べて、serverHttpオプションとserverExpressオプションをserverオプションの下に配置する必要があることを確認する必要がありました。
プロジェクトのdocpad.jsファイルは次のとおりです。
var https = require('https'),
path = require('path'),
fs = require('fs'),
express = require('express');
var sslOptions = {
key: fs.readFileSync(path.resolve(__dirname, "../../certificates/key.pem")),
cert: fs.readFileSync(path.resolve(__dirname, "../../certificates/cert.pem"))
};
serverExpress = express();
serverHttps = https.createServer(sslOptions, serverExpress);
docpadConfig = {
environments: {
http: {
port: 80,
events: {
serverExtend: function (server) {
var i = 0;
// Redirect requests that requires https
server.server.get(/^\/(api|backend)\/.*/, function (req, res) {
res.redirect('https://' + req.headers.host + req.url)
});
}
}
},
https: {
port: 443,
server: {
serverHttp: serverHttps,
serverExpress: serverExpress
}
}
}
};
module.exports = docpadConfig;
次の2つの環境を実行します。
docpad --env "http" run
docpad --env "https" run
以上です。