首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为LocomotiveJS应用程序实施/强制使用安全套接字层(NodeJS / Express)

为LocomotiveJS应用程序实施/强制使用安全套接字层(NodeJS / Express)
EN

Stack Overflow用户
提问于 2012-08-19 00:56:44
回答 2查看 666关注 0票数 0

随着NodeJS / Express现在可以使用像LocomotiveJS这样的MVC框架,我想知道如何在应用程序的一部分实现SSL?

例如,一个电子商务应用程序。

我需要所有的/checkout控制器来强制使用SSL。

我读过像this one这样的教程,但不确定如何用火车头实现这一点,因为Express实际上是“包装”的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-19 12:51:30

根据火车头的创建者Jared Hanson的this Google Groups posting in April的说法,目前火车头还没有直接支持SSL,但应该很快就会支持。

目前,我一直把火车头放在终止SSL的代理后面。但是,我很快就会为此添加一个命令行选项,以提供直接支持。

也就是说,如果您希望在不使用代理的情况下获得完全基于节点的解决方案,那么目前您需要在Locomotive中编辑Express实例。我已经测试了下面的,它工作得很好。

在撰写本文时,npm install locomotive使用的是Express2.x,不过github的最新版本已经更新为使用Express3.x。

如果你在Express2.x中使用火车头,那么我认为你必须在180行左右编辑/locomotive/lib/locomotive/index.js,使其看起来像这样:

代码语言:javascript
复制
var sslOptions = {
    cert : fs.readFileSync('/path/to/your/ssl-cert/dev.crt')
  , key  : fs.readFileSync('/path/to/your/ssl-key/dev.key')
};

var self = this
  , server = express.createServer(sslOptions)
  , entry;

此外,您可能仍然希望侦听HTTP并将所有流量重定向到HTTPS。坚持使用完全基于节点的解决方案,您可以简单地在/locomotive/lib/locomotive/cli/server.js末尾启动另一个Express服务器,将其所有流量重定向到HTTPS,例如

代码语言:javascript
复制
    ...
    debug('booting app at %s in %s environment', dir, env);
    locomotive.boot(dir, env, function(err, server) {
    if (err) { throw err; }
    server.listen(port, address, function() {
      var addr = this.address();
      debug('listening on %s:%d', addr.address, addr.port);
    });

    // add an http server and redirect all request to https
    var httpServer = require('express').createServer();
    httpServer.all('*', function(req, res) {
      res.redirect('https://' + address + ':' + port + req.url);
    });
    httpServer.listen(80); // probably change based on NODE_ENV
  });
}

最后,启动服务器:

代码语言:javascript
复制
$ lcm server -p 443 # again, probably use different port in development
票数 2
EN

Stack Overflow用户

发布于 2012-08-19 01:00:19

所有这些框架都是基于Express之上的,Express基于connect,它支持HTTPS。

无论如何,在现实生活中,你可能希望有一个nginx/或其他代理为你处理https。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12020482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档