Im creating new server to listen to new port(with the second create below),now when I call to the application with some port I want to redirect it to the new created server port, and put the message in the browser "Request route to on 9009"
I use the following code to create server
httpProxy = require('http-proxy');
proxy = httpProxy.createProxyServer({});
http.createServer(function (req, res) {
var hostname = req.headers.host.split(":")[0];
if (hostname ==='localhost') {
proxy.web(req, res, {target: 'http://localhost:9009'});
}
} }).listen(3000, function () {
console.log('App listening on port 3000');
});
now I create the new server
http.createServer(function (req, res) {
res.writeHead(302, {
'Location': 'http://localhost:9009'
});
res.end("Request route to 9009");
}).listen(9009);
now when I put localhost:3000 it redirects me to localhost:9009 (which is exactly what I need I can see in the browser) but I got error This webpage has a redirect loop ERR_TOO_MANY_REDIRECTS
If I remove from the second createServer function the following
res.writeHead(302, {
'Location': 'http://localhost:9009'
});
it is not redirects and I dont got the error...
did I put the this code in the wrong place?or there is a way to do it diffrent?
I use https://github.com/nodejitsu/node-http-proxy
update
I change the code to following
var http = require('http');
http.createServer(function (req, res) {
console.log("Server created");
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.write('9009 here' + '\n' + JSON.stringify(req.headers, true, 2));
res.end();
}).listen(9009);
http.createServer(function(req, res) {
console.log("Server 2 created");
res.writeHead(302, {
'Location': 'http://localhost:9009/'
});
res.end("Request route to 9009");
}).listen( 3001 );
in the code you show, the proxy make port 9009 show up on port 3000, more like an apache url rewrite than a url redirect.
if you want to send visitors landing on port 3000 to port 9009, simple http is plenty:
if you want every visitor to a new personal port, this is a simple but naive way to do so (not accounting for repeated ports, which will crash node 1/1000 times):