Trying to implement http proxy with custom routing logic using http-proxy 1.4.3 , following this tuto and executing the following code:
var httpProxy = require("http-proxy"); var url = require("url"); httpProxy.createServer(function(req, res, proxy) { var hostname = req.headers.host.split(":")[0]; var pathname = url.parse(req.url).pathname; // Options for the outgoing proxy request. var options = { host: hostname }; // Routing logic if(hostname == "127.0.0.1") { options.port = 8083; } else if(pathname == "/upload") { options.port = 8082; options.path = "/"; } else { options.port = 8081; } // (add more conditional blocks here) proxy.proxyRequest(req, res, options); }).listen(8080); console.log("Proxy listening on port 8080"); // We simulate the 3 target applications var http = require("http"); http.createServer(function(req, res) { res.end("Request received on 8081"); }).listen(8081); http.createServer(function(req, res) { res.end("Request received on 8082"); }).listen(8082); http.createServer(function(req, res) { res.end("Request received on 8083"); }).listen(8083);
When I try, as shown in the mulberry mode, to access http://localhost:8080/anything , I get the following error
/var/www/node.proxy/node_modules/http-proxy/lib/http-proxy/index.js:119 throw err; ^ Error: Must provide a proper URL as target at ProxyServer.<anonymous> (/var/www/node.proxy/node_modules/http-proxy/lib/http-proxy/index.js:68:35) at Server.closure (/var/www/node.proxy/node_modules/http-proxy/lib/http-proxy/index.js:125:43) at Server.EventEmitter.emit (events.js:98:17) at HTTPParser.parser.onIncoming (http.js:2108:12) at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23) at Socket.socket.ondata (http.js:1966:22) at TCP.onread (net.js:525:27)
since i am nodejs noobie i really don't know.
source share