Cách hay để đạt được điều đó với hapi là đặt các trang web khác nhau của bạn để tách riêng plugins và sử dụng công cụ sửa đổi vhost
khi tải plugin, sử dụng lý tưởng Glue.
Dưới đây là một ví dụ:
trang web/dogs.js
exports.register = function (server, options, next) {
// Put all your routes for the site in here
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Dogs homepage');
}
});
next();
};
exports.register.attributes = { name: 'dogs' };
trang web/cats.js
exports.register = function (server, options, next) {
// Put all your routes for the site in here
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Cats homepage');
}
});
next();
};
exports.register.attributes = { name: 'cats' };
index.js
const Glue = require('glue');
const Hoek = require('hoek');
const manifest = {
connections: [{
port: 4000,
}],
registrations: [
{
plugin: {
register: './sites/cats'
},
options: {
routes: {
vhost: 'cats.com'
}
}
},
{
plugin: {
register: './sites/dogs'
},
options: {
routes: {
vhost: 'dogs.com'
}
}
}
]
};
const options = {
relativeTo: __dirname
};
Glue.compose(manifest, options, (err, server) => {
Hoek.assert(!err, err);
server.start((err) => {
Hoek.assert(!err, err);
console.log('server started');
});
});
Sau đó bạn có thể xác nhận rằng các tuyến hoạt động chính xác với một vài cURL lệnh:
$ curl -H "Host: cats.com" localhost:4000/
Cats homepage
$ curl -H "Host: dogs.com" localhost:4000/
Dogs homepage
Một trình duyệt sẽ thiết lập rằng tiêu đề Host cho bạn mặc dù vậy khi bạn duyệt đến http://cats.com hoặc http://dogs.com HAPI sẽ phục vụ quý khách nội dung chính xác (miễn là DNS của bạn được cấu hình đúng).
Nguồn
2016-02-29 11:54:03
Tôi làm cách nào để phân phát mẫu? – eosimosu