middleware vhost
Instale
$ npm install vhostAPI
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 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);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 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);usando com qualquer manipulador de solicitação genérico
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);