当只有一个可以完美地完成工作时,我真的不明白启动两台服务器的意义。例如,通过在服务器文件中添加一个简单的中间件:
app.use(function(req, res, next) {
if(!req.secure) {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
next();
});
这会将任何非安全请求重定向到相应的 HTTPS 页面。例如,http://example.com/到https://example.com/和http://example.com/foo?bar=woo到https://example.com/foo?bar=woo。这绝对是我所期望的行为。也许您应该按主机过滤它,因此它仅重定向到您拥有并安装了正确证书的域。
如果您的应用程序在 Nginx 等另一台服务器后面运行,您可能需要添加配置参数app.set('trust proxy', true)。或者,更好的是,让 Nginx 自己进行重定向,这将比任何 Node.js 应用程序更有效。
编辑:根据我的基准,join比+连接字符串要快一点。没什么戏剧性的,但每次胜利都是胜利……