Как я могу настроить несколько поддоменов в Express.js или Connect.js - PullRequest
51 голосов
/ 26 апреля 2011

Я привык работать над httpd (Apache), который предоставляет способ настройки поддоменов, сопоставленных с каталогом. Как я могу сделать то же самое в Connect.js / Express.js? Я вижу, что единственное, что у меня есть, это маршруты, которые я не уверен, как я могу использовать для настройки поддоменов. У меня есть субдомены, такие как m.mysite.com, sync.mysite.com

Может кто-нибудь помочь?

Ответы [ 4 ]

114 голосов
/ 26 апреля 2011

Или же вы можете использовать vhost.

Затем создайте несколько сайтов в своем собственном каталоге и экспортируйте экспресс-приложение, например. /path/to/m/index.js

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

А затем обрабатывать все запросы с помощью следующего приложения:

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)

Обратите внимание, что /path/to/m и /path/to/sync могут быть абсолютными (как написано выше) или относительными путями.

18 голосов
/ 26 апреля 2011

Вы можете добавить субдомен к запросу, а затем проверить его в последующих next() вызовах.

Я получил следующий код от> http://groups.google.com/group/express-js/browse_thread/thread/b04bbaea7f0e8eed (так что полная заслуга первоначального автора)

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 
});
14 голосов
/ 27 апреля 2014

Я недавно сталкивался с этой проблемой и написал модуль, чтобы помочь с этим, используя экспресс 4. https://www.npmjs.org/package/express-subdomain.

Пример - поддомен 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);

Проверьте модуль на npm, чтобы увидеть больше примеров.

6 голосов
/ 29 января 2012

Я создал модуль для помощи с поддоменами в Express: https://github.com/WilsonPage/express-subdomain-handler

...