middleware vhost

Instale

Terminal window
$ npm install vhost

API

var vhost = require('vhost');

vhost(hostname, handle)

Crie uma nova função middleware para dispensar solicitação para handle quando o host de entrada para a solicitação corresponder ao hostname. A função é chamada como handle(req, res, next), como um middleware padrão.

hostname pode ser uma string ou um objeto RegExp. When hostname is a string it can contain * to match 1 or more characters in that section of the hostname. Quando hostname é um RegExp, será forçado a insensível a maiúsculas de minúsculas (pois os nomes de host são) e será forçado a corresponder com base no início e no final do nome do host.

Quando o host é correspondido e o pedido é enviado para um manipulador vhost, a propriedade req.vhost será preenchida com um objeto. This object will have numeric properties corresponding to each wildcard (or capture group if RegExp object provided) and the hostname that was matched.

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

Exemplos

usar conexão com porções estáticas

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 subdomain
var staticapp = connect();
staticapp.use(serveStatic('public'));
// create main app
var app = connect();
// add vhost routing to main app for mail
app.use(vhost('mail.example.com', mailapp));
// route static assets for "assets-*" subdomain to get
// around max host connections limit on browsers
app.use(vhost('assets-*.example.com', staticapp));
// add middlewares and main usage to app
app.listen(3000);

usando com conexão para subdomínios de usuário

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 app
var app = connect();
// add vhost routing for main app
app.use(vhost('userpages.local', mainapp));
app.use(vhost('www.userpages.local', mainapp));
// listen on all subdomains for user pages
app.use(vhost('*.userpages.local', userapp));
app.listen(3000);

usando com qualquer manipulador de solicitação genérico

var connect = require('connect');
var http = require('http');
var vhost = require('vhost');
// create main app
var 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 framework
var 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);

Tipo:

MIT