node.js express subdomain connect.js

node.js - ¿Cómo puedo configurar múltiples subdominios en Express.js o Connect.js?



subdomain (4)

Creé un módulo para ayudar con los subdominios en Express: https://github.com/WilsonPage/express-subdomain-handler

Estoy acostumbrado a trabajar en httpd (Apache), que proporciona una forma de configurar subdominios asignados a un directorio. ¿Cómo puedo hacer lo mismo en Connect.js / Express.js? Veo que lo único que tengo son rutas que no estoy seguro de cómo puedo usar para configurar subdominios. Tengo subdominios como m.mysite.com, sync.mysite.com

¿Alguien puede ayudar?


Puede agregar un subdominio a una solicitud y luego verificarlo en las next() llamadas next() .

Obtuve el siguiente código de> http://groups.google.com/group/express-js/browse_thread/thread/b04bbaea7f0e8eed (crédito tan completo para el autor original)

app.get(''*'', function(req, res, next){ if(req.headers.host == ''some.sub.domain.com'') //if it''s a sub-domain req.url = ''/mysubdomain'' + req.url; //append some text yourself next(); }); // This will mean that all get requests that come from the subdomain will get // /subdomain appended to them, so then you can have routes like this app.get(''/blogposts'', function(){ // for non-subdomain }); app.get(''/mysubdomain/blogposts'', function(){ // for subdomain });


Recientemente me encontré con este problema y escribí un módulo para ayudarlo con el uso de express 4. https://www.npmjs.org/package/express-subdomain .

Ejemplo - subdominio api

var express = require(''express''); var app = express(); var router = express.Router(); //api specific routes router.get(''/'', function(req, res) { res.send(''Welcome to our API!''); }); router.get(''/users'', function(req, res) { res.json([ { name: "Brian" } ]); }); app.use(subdomain(''api'', router)); app.listen(3000);

Consulte el módulo sobre npm para ver más ejemplos.


O alternativamente puedes usar vhost .

Luego, cree varios sitios en su propio directorio y exporte la aplicación exprés, ej. /path/to/m/index.js :

var app = express() /* whatever configuration code */ exports.app = app // There is no need for .listen()

Y luego maneje todas las solicitudes con la siguiente aplicación:

var vhost = require(''vhost''); express() .use(vhost(''m.mysite.com'', require(''/path/to/m'').app)) .use(vhost(''sync.mysite.com'', require(''/path/to/sync'').app)) .listen(80)

Tenga en cuenta que /path/to/m y /path/to/sync pueden ser rutas absolutas (como se describió anteriormente) o rutas relativas.