2016-02-29 9 views
5

Angenommen, ich möchte meine 2 Websites (cats.com und dogs.com) auf demselben Server mit einer einzigen IP-Adresse (d. H. Mit virtuellen Hosts) hosten. Ich möchte sie beide mit hapi.js schreiben und sie als einen einzigen Prozess laufen lassen.Wie unterstütze ich mehrere Websites auf demselben Server mit hapi.js?

Die Websites können sich überschneidende Pfade haben, z. B. können beide eine /about Seite haben.

Wie könnte ich dies mit Hapi implementieren?

Antwort

3

Eine gute Möglichkeit, zu erreichen, dass mit hapi, indem Sie Ihre verschiedenen Standorte in getrennten plugins und mit dem vhost Modifikator ist, wenn das Plugin geladen, idealerweise Glue verwenden.

Hier ein Beispiel:

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

sites/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'); 
    }); 
}); 

Anschließend können Sie bestätigen, dass das Routing korrekt mit ein paar cURL arbeitet Befehle:

$ curl -H "Host: cats.com" localhost:4000/ 
Cats homepage 

$ curl -H "Host: dogs.com" localhost:4000/ 
Dogs homepage 

Ein Browser für Sie, dass Host-Header gesetzt wird aber so, wenn Sie wechseln Sie zu http://cats.com oder http://dogs.com hapi werden Sie dienen der richtige Inhalt (sofern Ihr DNS korrekt konfiguriert ist).

+0

Wie kann ich Vorlagen bereitstellen? – eosimosu

Verwandte Themen