2011-02-11 4 views
13

node.js가 프록시 역할을하고 한 서버에서 다른 서버로 전송 된 모든 요청을 전달하지만 url 경로에서/couchdb /를 제거하므로 예를 들어 POST/couchdb/mydatabase가 POST/mydatabase가됩니다. 응답을 받으면 첫 번째 서버로 보내야합니다. 내가 한 짓을Node.js를 전달 프록시로 사용하지만 URL 경로를 변경 하시겠습니까?

이 URL 경로는/CouchDB를 시작하는 모든 요청/

app.all(/^\/couchdb\/(?:.)*/, function(req, res) { 

}); 

누군가가 나를 통해 안내 수를 얻기 위해 (표현 사용)입니다. 감사합니다

답변

12

보기는 node-http-proxy입니다. 당신은 이것을 다음과 같이 사용할 수 있습니다 :

var http = require('http'), 
    httpProxy = require('http-proxy'); 
    httpProxy.createServer(function (req, res, proxy) { 
     // Put your custom server logic here (eg rewrite url/header,...) 
     proxy.proxyRequest(req, res, {host: 'localhost', port: 9000}); 
    }).listen(8000); 
+1

http-proxy의 api가 변경된 것으로 추측됩니다. 이것을 작동 시키려면 proxy.proxyRequest (req, res, {host : 'localhost', port : 9000}); –

+0

이 옵션은 더 이상 작동하지 않습니다. 이제는 옵션에서 대상 또는 전달 필드의 일부를 전달해야합니다. 위 코드를 실행하면 'Target에 유효한 URL을 제공해야합니다.' –

관련 문제