2011-02-11 11 views
13

¿Cómo dejo que node.js actúe como un proxy y reenvíe todas las solicitudes enviadas de un servidor a otro servidor pero stripping/couchdb/de la ruta de la url para que, por ejemplo, POST/couchdb/mydatabase sea POST/mydatabase. Y cuando recibe la respuesta, debe enviarla al primer servidor.Node.js como proxy de reenvío pero cambiando la ruta de URL?

Todo lo que he hecho es esta (usando expreso) para obtener todas las solicitudes en las que la ruta URL comienza con/couchdb/

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

}); 

pudiera guiarme a través de alguien. Gracias

Respuesta

12

echar un vistazo a node-http-proxy. puede usarlo así:

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

Supongo que la API de http ha cambiado desde que se publicó. Para que esto funcione, tuve que usar: proxy.proxyRequest (req, res, {host: 'localhost', port: 9000}); –

+0

Esto ya no funciona, ya que ahora es obligatorio pasar algún tipo de objetivo o campo hacia adelante en las opciones. Ejecutar el código anterior me da 'Debe proporcionar url válida para Target' –