Как настроить несколько поддоменов в Express.js или подключение.js
Я привык работать на httpd (Apache), который обеспечивает способ настройки поддоменов, которые сопоставляются с каталогом.
Как я могу сделать то же самое в подключения.js / Express.Джей ? Я вижу, что единственное, что у меня есть, это маршруты, которые я не уверен, как я могу использовать для настройки поддоменов. У меня есть поддомены, такие как m.mysite.com, sync.mysite.com
может кто-нибудь помочь ?
4 ответов:
или в качестве альтернативы вы можете использовать
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могут быть абсолютные пути (как написано выше) или относительные пути.
вы можете добавить поддомен к запросу, а затем проверить его в последующих
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 });
недавно я столкнулся с этой проблемой и написал модуль, чтобы помочь с ней, используя express 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, чтобы увидеть больше примеров.
Я создал модуль, чтобы помочь с поддоменами в Express: https://github.com/WilsonPage/express-subdomain-handler
Comments