2011-02-11 92 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}); – 2011-08-28 02:18:54