node.js 응용 프로그램 (A, B, C)이 3 개 있습니다. A는 진입 점이며 요청시 매개 변수 값에 따라 B 또는 C 방향으로 리디렉션되도록이 진입 점에 도달하는 모든 요청을 좋아합니다.여러 node.js 프로세스 간 통신
현재 res.redirect를 A (expressjs 프레임 워크를 사용하고 있습니다.)에서 사용하고 있습니다. 그것은 실제로 투명하지 않다는 점을 제외하고는 정상적으로 작동합니다 (외부에서 원래 요청이 리다이렉트되었음을 알 수 있습니다).
이 문제를 해결하기 위해, 나는 B를하고 C 대신 포트 번호의 소켓에서 수신 대기하지만 A가 B 또는 C
이하는 방법에 대한 아이디어가 사용하는 소켓에 요청을 리디렉션해야하는 방법을 모른다 2 node.js 소켓을 통한 통신 프로세스?
** UPDATE **
I have changed the code of A to use node-proxy:
app.all('/port/path/*', function(req, res){
// Host to proxied to
var host = 'localhost';
// Retrieve port and build new URL
var arr_url = req.url.split('/');
var port = arr_url[1];
var new_url = '/' + arr_url.slice(2).join('/');
console.log("CURRENT URL:" + req.url); // url is /5000/test/...
console.log("NEW URL :" + new_url); // url is /test/...
// Change URL
req.url = new_url;
var proxy = new httpProxy.HttpProxy();
proxy.proxyRequest(req, res, {
host: host,
port: port,
enableXForwarded: false,
buffer: proxy.buffer(req)
});
console.log("Proxied to " + host + ':' + port + new_url);
// For example: the url is localhost:10000/5000/test
// the log tells me 'Proxied to localhost:5000/test' => that is correct
// But... I do not get any return
// If I issue 'curl -XGET http://localhost:5000/test' I get the return I expect
});
이의 명백한 실수?
A, B 및 C는 모두 웹 서비스입니까? –
예, 모든 웹 서비스가 있지만 B와 C를 외부에 노출하고 싶지 않습니다. – Luc
Josh는 바른 대답을 가지고 있습니다 : B와 C를'localhost'에 바인드하여 외부 세계에 노출되지 않도록 한 다음 A를 역방향 프록시로 씁니다. (또는 A가 단지 스위치 보드 인 경우 nginx를 사용하십시오.) –