Hapi JS узел JS создание https-сервера
Как создать Хапи http
и https
сервер слушает на 80 и 443 с той же маршрутизации?
(мне нужен сервер, который должен работать как на http, так и на https с точно таким же API)
6 ответов
@codelion дал хороший ответ, но если вы все еще хотите слушать на нескольких портах, вы можете передать несколько конфигураций для соединений.
var server = new Hapi.Server();
server.connection({ port: 80, /*other opts here */});
server.connection({ port: 8080, /*other opts, incl. ssh */ });
но еще раз отметим, что было бы неплохо начать обесценивать http-соединения. Google и другие вскоре начнут отмечать их небезопасными. Кроме того, вероятно, было бы хорошей идеей фактически обрабатывать SSL с nginx или чем-то еще, а не на самом узле приложения.
может быть не принято обрабатывать запросы https непосредственно в приложении, но Hapi.js может обрабатывать как http, так и https в одном API.
var Hapi = require('hapi');
var server = new Hapi.Server();
var fs = require('fs');
var tls = {
key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/example.com/cert.pem')
};
server.connection({address: '0.0.0.0', port: 443, tls: tls });
server.connection({address: '0.0.0.0', port: 80 });
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.start(function () {
console.log('Server running');
});
вы можете перенаправить все http-запросы на https вместо:
if (request.headers['x-forwarded-proto'] === 'http') {
return reply()
.redirect('https://' + request.headers.host + request.url.path)
.code(301);
}
проверить https://github.com/bendrucker/hapi-require-https Для больше деталей.
Посетите Ссылку:http://cronj.com/blog/hapi-mongoose
здесь пример проекта, который может помочь вам в этом.
для версии hapi ранее 8.x
var server = Hapi.createServer(host, port, {
cors: true
});
server.start(function() {
console.log('Server started ', server.info.uri);
});
для новой версии hapi
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: app.config.server.port });
вы также можете использовать локальный-ssl-прокси пакет npm для прокси локального HTTPS к HTTP. Только для местного развития.
Я искал что-то вроде этого и узнал https://github.com/DylanPiercey/auto-sni который имеет пример использования с Express, Koa, Hapi (непроверенный)
Он в основном основан на сертификатах letsencrypt и загружает сервер hapi с помощью пользовательского прослушивателя.
еще не пробовал.