2013-12-23 2 views
2

Я хочу нанести example.org и cname.example.org на два разных приложения node.js. Но не используйте веб-сервер http, такой как nginx.Node.js: URL-адрес с записью CNAME

И веб-каркас express.

Так есть ли какое-либо промежуточное ПО в express или node.js для этого?

ответ

1

Экспресс использует подключения, так что вы можете сделать это:

var express = require('express'), 
    app = express(); 

app.use(express.vhost('example.org', require('./exampleApp/'))); 
app.use(express.vhost('cname.example.org', require('./cnameExampleApp/'))); 

app.listen(80); 

Существует также пример на GitHub: https://github.com/visionmedia/express/tree/master/examples/vhost

А вот ссылка на connect.vhost: http://www.senchalabs.org/connect/vhost.html

+0

Это работает, спасибо :). – atupal

1

В любом случае вам нужен прокси-сервер, такой как nginx, если ваши приложения с двумя узлами размещены на одном хосте.

var request = require('request');  

var proxy = require('http').createServer(function (req, res) {  

    // distribute by request header 'host' 
    var targetHost = req.headers.host; 
    if (targetHost === 'example.org') { 
     req.pipe(request('http://your-node-app1' + req.url)).pipe(res); 
    } else if (targetHost === 'cname.example.org') { 
     req.pipe(request('http://your-node-app2' + req.url)).pipe(res); 
    } else { // not found or host is invalid 
     res.statusCode = 404; 
     res.end('host is not found!'); 
    } 
}); 

proxy.listen(80); // assume it listens to port 80 
Смежные вопросы