2013-12-23 4 views
2

example.orgcname.example.org을 두 개의 다른 node.js 앱에 매핑하고 싶습니다. 그러나 nginx와 같은 http 웹 서버는 사용하지 마십시오.Node.js : CNAME 레코드가있는 URL 경로

그리고 웹 프레임 워크는 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

어쨌든 2 노드 응용 프로그램이 동일한 호스트에서 호스팅되는 경우 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