2016-02-29 15 views
5

Giả sử tôi muốn lưu trữ 2 trang web của mình (cats.com và dogs.com) trên cùng một máy chủ với một địa chỉ IP duy nhất (ví dụ: với máy chủ ảo). Tôi muốn viết chúng cả với hapi.js và để chúng chạy như một tiến trình đơn lẻ.Làm cách nào để tôi hỗ trợ nhiều trang web trên cùng một máy chủ với hapi.js?

Các trang web có thể có đường dẫn trùng lặp, ví dụ: cả hai trang có thể có trang /about.

Làm cách nào để triển khai tính năng này với hapi?

Trả lời

3

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).

+0

Tôi làm cách nào để phân phát mẫu? – eosimosu

Các vấn đề liên quan