vhost Middleware
Installieren
$ npm install vhostAPI
var vhost = require('vhost');vhost(Hostname, Handle)
Erstelle eine neue Middleware-Funktion, um die Anfrage an handle zu übergeben, wenn der eingehende
Host für die Anfrage mit hostname übereinstimmt. Die Funktion wird wie eine Standard-Middleware als
handle(req, res, next) aufgerufen.
hostname kann ein String oder ein RegExp-Objekt sein. Wenn hostname ein String ist, kann es
* enthalten, um 1 oder mehr Zeichen in diesem Abschnitt des Hostnamens zu finden. When
hostname is a RegExp, it will be forced to case-insensitive (since hostnames are)
and will be forced to match based on the start and end of the hostname.
Wenn der Host übereinstimmt und die Anfrage an einen vhost handler gesendet wird, wird die Eigenschaft req.vhost
mit einem Objekt gefüllt. Dieses Objekt wird numerische Eigenschaften
haben, die zu jedem Platzhalter (oder Capture-Gruppe, wenn RegExp-Objekt zur Verfügung gestellt wurde) und dem übereinstimmenden
hostname haben.
var connect = require('connect');var vhost = require('vhost');var app = connect();
app.use( vhost('*.*.example.com', function handle(req, res, next) { // for match of "foo.bar.example.com:8080" against "*.*.example.com": console.dir(req.vhost.host); // => 'foo.bar.example.com:8080' console.dir(req.vhost.hostname); // => 'foo.bar.example.com' console.dir(req.vhost.length); // => 2 console.dir(req.vhost[0]); // => 'foo' console.dir(req.vhost[1]); // => 'bar' }));Beispiele
mit Verbindung für statische Servierung verwenden
var connect = require('connect');var serveStatic = require('serve-static');var vhost = require('vhost');
var mailapp = connect();
// add middlewares to mailapp for mail.example.com
// create app to serve static files on subdomainvar staticapp = connect();staticapp.use(serveStatic('public'));
// create main appvar app = connect();
// add vhost routing to main app for mailapp.use(vhost('mail.example.com', mailapp));
// route static assets for "assets-*" subdomain to get// around max host connections limit on browsersapp.use(vhost('assets-*.example.com', staticapp));
// add middlewares and main usage to app
app.listen(3000);mit Verbindung für Benutzer-Subdomains verwenden
var connect = require('connect');var serveStatic = require('serve-static');var vhost = require('vhost');
var mainapp = connect();
// add middlewares to mainapp for the main web site
// create app that will server user content from public/{username}/var userapp = connect();
userapp.use(function (req, res, next) { var username = req.vhost[0]; // username is the "*"
// pretend request was for /{username}/* for file serving req.originalUrl = req.url; req.url = '/' + username + req.url;
next();});userapp.use(serveStatic('public'));
// create main appvar app = connect();
// add vhost routing for main appapp.use(vhost('userpages.local', mainapp));app.use(vhost('www.userpages.local', mainapp));
// listen on all subdomains for user pagesapp.use(vhost('*.userpages.local', userapp));
app.listen(3000);mit jedem generischen Anfrage-Handler verwenden
var connect = require('connect');var http = require('http');var vhost = require('vhost');
// create main appvar app = connect();
app.use( vhost('mail.example.com', function (req, res) { // handle req + res belonging to mail.example.com res.setHeader('Content-Type', 'text/plain'); res.end('hello from mail!'); }));
// an external api server in any frameworkvar httpServer = http.createServer(function (req, res) { res.setHeader('Content-Type', 'text/plain'); res.end('hello from the api!');});
app.use( vhost('api.example.com', function (req, res) { // handle req + res belonging to api.example.com // pass the request to a standard Node.js HTTP server httpServer.emit('request', req, res); }));
app.listen(3000);