Новое в Hapijs и пытается использовать его для создания приложения, которое использует HTTPS для всех запросов и перенаправляет HTTP на безопасное соединение. Проблема заключается в том, что приложение не работает в режиме HTTPS, но проблема не возникает если я изменяю URL-адрес HTTP, сервер не отвечает и не знает причину.Hapijs с использованием Http и Https на одном соединении
Это то, что я придумал до сих пор, он работает, но не для HTTP
var connectionOptions = {
port: 3000,
tls: {
key: fs.readFileSync(path.join(__dirname, 'key/key.pem'), 'utf8'),
cert: fs.readFileSync(path.join(__dirname, 'key/cert.pem'), 'utf8')
}
};
var server = new Hapi.Server();
server.connection(connectionOptions);
//This method not called when its HTTP
server.ext('onRequest', function (request, reply) {
if (request.headers['x-forwarded-proto'] === 'http') {
reply.redirect('https://' + request.headers.host +
request.url.path).code(301);
return reply.continue();
}
reply.continue();
});
var routes = require('./routes')(server);
server.route(routes);
if (!module.parent) {
server.start(function() {
console.log('Server running at:', server.info.uri);
});
}
Как заставить все просьбы быть HTTPS. Благодарим за помощь
Фигурных что много, спасибо, но есть несколько примеров, показывая хорошую практику в его настройке или это плохая идея, и лучше использовать одно подключение HTTP-ам , заставляют думать о развертывании его в Heroku и не знаю, как работать с двумя серверами в одном приложении. Большое спасибо за помощь. – ramon22
@ ramon22 Я добавил пример ответа. Я не слишком уверен в отношении Heroku, поскольку я никогда не использовал его, но вы, вероятно, правы, я полагаю, что они сами позаботятся о завершении SSL и всегда проксируют HTTP-трафик. В этом случае вы действительно захотите проверить заголовок 'x-forwarded-proto' и перенаправить на основе значения этого. –