0

LocomotiveJSのようなMVCフレームワークがNodeJS/Expressで利用できるようになったので、アプリの一部にSSLを実装する方法を考えていますか?

たとえば、eコマースアプリ。

SSLを強制するには、すべての/checkoutコントローラーが必要です。

私はこのようなチュートリアルを読みましが、Expressは効果的に「ラップ」されているため、Locomotiveでこれを実装する方法がわかりません。

4

2 に答える 2

2

現在、SSLはLocomotiveによって直接サポートされていませんが、Locomotiveの作成者であるJared Hansonが4月に投稿したこのGoogleグループによると、間もなくサポートされる予定です。

現在、私は常にLocomotiveをSSLを終了するプロキシの背後に置いています。ただし、直接サポートするために、このためのコマンドラインオプションをまもなく追加します。

とはいえ、プロキシを使用せずに完全にノードベースのソリューションが必要な場合は、当面の間、LocomotiveでExpressインスタンスを編集する必要があります。私は以下をテストしました、そしてそれはうまく働いています。

執筆時点では、npm install locomotiveExpress 2.xを使用していますが、最新のgithubはExpress3.xを使用するように更新されています。

/locomotive/lib/locomotive/index.jsExpress 2.xでLocomotiveを使用している場合は、180行目あたりを次のように編集する必要があると思います。

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にリダイレクトすることもできます。すべてノードベースのソリューションに固執すると、最後に別のExpressサーバーを起動するだけで、/locomotive/lib/locomotive/cli/server.jsすべてのトラフィックをHTTPSにリダイレクトできます。

    ...
    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
  });
}

最後に、サーバーを起動します。

$ lcm server -p 443 # again, probably use different port in development
于 2012-08-19T04:51:30.437 に答える
0

これらのフレームワークはすべて、HTTPSをサポートする接続に基づくExpressに基づいています。

とにかく、実際の状況では、とにかくhttpsを処理するnginx/または他のプロキシが必要になる場合があります。

于 2012-08-18T17:00:18.727 に答える