我想让用户使用http和https访问网站的所有页面。
我还希望能够将需要加密的某些路径(/ api / *和/ backend / *)的HTTP请求重定向到https(强制使用https)。
最佳答案
节点版本:v0.9.10
docpad版本:v6.21.10
重要说明:docpad config file的文档似乎已过时,我不得不挖掘源代码才能发现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;
运行以下两种环境:
docpad --env "http" run
docpad --env "https" run
就是这样。
关于ssl - 如何在ssl上运行docpad?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15047273/