Можно ли маршрутизировать экспресс-контроллеры и базовый сервер nodejs в отдельных модулях? - PullRequest
1 голос
/ 07 марта 2011

У меня есть требование.Зависит от заголовка HOST с использованием другого модуля, например www.myhost.com с использованием expressjs и * .h.myhost.com с использованием базового nodejs https.createServer ().И они работают в одном и том же порту.

https.createServer(options,function(req, res){
   if(req.host === "www.myhost.com"){
       express.handle(req,res) //what I hope
       return 
   }
   //handle by normal way
})

Как это сделать?

1 Ответ

5 голосов
/ 07 марта 2011

Вы можете использовать node-http-proxy от nodejitsu. Я использую его для развертывания и настройки нескольких приложений, работающих в разных поддоменах.

Пример:

var express = require('express'),
  https = require('https'),
  proxy = require('http-proxy');

// define proxy routes
var options = {
  router: {
    'www.myhost.com': '127.0.0.1:8001',
    '*.h.myhost.com': '127.0.0.1:8002'
  }
};

// express server for www.myhost.com
var express = express.createServer();

// register routes, configure instance here
// express.get('/', function(res, req) { });

// start express server
express.listen(8001);

// vanilla node server for *.h.myhost.com
var vanilla = https.createServer(options,function(req, res){
  // handle your *.h.myhost.com requests
}).listen(8002);

// start proxy
var proxyServer = httpProxy.createServer(options);
proxyServer.listen(80);

Я не уверен в использовании подстановочных знаков в таблице маршрутизации http-proxy (* .h.myhost.com), но поскольку эти значения преобразуются в регулярные выражения в node-http-proxy, я предполагаю, что они работают. 1008 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...