Запуск приложения Keystone.js через https на Heroku

У меня есть веб-приложение, созданное на Keystone.js CMS для node.js, которое я буду развертывать с помощью пользовательского домена на Heroku. Я хочу, чтобы все приложение по умолчанию работало на https и не разрешало никаких http-соединений. Я немного огляделся и не могу найти окончательного ответа о том, как лучше всего это сделать. Как правило, то есть для приложения Rails, я просто покупаю дополнительный SSL-сертификат Heroku для своего личного домена (доменов) и указываю свой DNS на конечную точку SSL, предоставленную Heroku. В своем приложении я бы настроил по умолчанию все подключения к HTTPS.

Что касается экземпляра узла (и, в частности, экземпляра Keystone.js), я немного не понимаю. Могу ли я просто выполнить тот же процесс, что и выше, купить надстройку SSL и указать свой DNS на конечную точку SSL Heroku? Нужно ли мне что-то делать в коде базового узла для поддержки? И как принудительно использовать https и не разрешать http?

Новичок в node и keystone, поэтому любая помощь будет принята с благодарностью!


person d c    schedule 05.11.2015    source источник


Ответы (1)


Используйте express-sslify.

Я помещаю его в свой routes/index.js, так как функция, которую я экспортирую оттуда, получает ссылку на экспресс-приложение.

Все, что вам нужно сделать, это указать экспрессу использовать sslify, но вы, вероятно, не захотите включать его для разработки.

С июля Heroku по умолчанию использует NODE_ENV в рабочей среде, поэтому вы можете

// 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
};

Это отправит 301 любому, кто попытается получить доступ к вашему приложению через обычный HTTP.

person ivarni    schedule 03.12.2015