在Heroku上通过https运行Keystone.js应用程序

时间:2015-11-05 21:32:33

标签: node.js ssl heroku https keystonejs

我有一个基于Keystone.js CMS构建的web应用程序,用于node.js,我将在Heroku上使用自定义域进行部署。我希望整个应用程序默认运行在https上,不允许任何http连接。我看了很多,似乎无法找到一个明确的答案,最好的方法来解决这个问题。通常,对于Rails应用程序,我只会为自定义域购买Heroku附加SSL证书,并指向我的DNS以指向Heroku配置的SSL端点。在我的应用程序中,我将配置为默认所有HTTPS连接。

对于节点实例(特别是Keystone.js实例),我有点不清楚。我可以使用与上面相同的流程,购买SSL插件并将我的DNS指向Heroku SSL端点吗?我是否需要在基节点代码中执行任何操作才能支持?以及如何强制执行https而不允许http?

节点和keystone的新功能,所以任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:0)

使用express-sslify

我把它放在我的routes/index.js中,因为我从那里导出的函数收到了对express应用程序的引用。

您需要做的就是告诉express使用sslify,但您可能不想启用它进行开发。

自7月以来,Heroku defaults NODE_ENV to production所以你可以做到

// Setup Route Bindings
exports = module.exports = function(app) {

    if (process.env.NODE_ENV === 'production') {
        var enforce = require('express-sslify');
        app.use(enforce.HTTPS({ trustProtoHeader: true }));
    }

    // Declare your views
};

这将向尝试通过普通HTTP访问您的应用的任何人发送301。